【转】 ABAP中的异常处理 - TRY CATCH的使用实例
生活随笔
收集整理的這篇文章主要介紹了
【转】 ABAP中的异常处理 - TRY CATCH的使用实例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在平時的ABAP開發(fā)中,需要捕獲的異常通常為兩種,一種是執(zhí)行SQL,比如主鍵重復(fù),INSERT語句字段類型不匹配等。還有就是RFC的通信錯誤,比如不能進(jìn)行遠(yuǎn)程連接等。通??梢赃@么處理:
1.數(shù)據(jù)庫異常:
DATA: lcx_error TYPE REF TO cx_root. "cx_sy_sql_error . "cx_sy_open_sql_db.
DATA i_tab LIKE TABLE OF spfli WITH HEADER LINE.
DATA err_text TYPE c LENGTH 1000.
TRY.
INSERT spfli FROM TABLE i_tab.
CATCH cx_sy_open_sql_db INTO lcx_error.
err_text = lcx_error->get_text( ). "得到錯誤信息
sy-subrc = 4. "改變系統(tǒng)變量
ENDTRY.
IF sy-subrc <> 0.
WRITE :/ '數(shù)據(jù)更新失敗!'.
WRITE err_text.
ROLLBACK WORK.
ELSE.
WRITE :/ '數(shù)據(jù)更新成功!'.
COMMIT WORK.
ENDIF.
2.RFC異常:
TRY.
CALL FUNCTION 'Z_DAQ_CALL_JCO'
DESTINATION 'ZJCOSERVER_DAQ'
EXPORTING
pv_empid = l_empid
IMPORTING
pv_rlt = l_rlt
TABLES
it_spfli = i_tab
EXCEPTIONS
system_failure = 1 MESSAGE err_text
communication_failure = 2 MESSAGE err_text.
ENDTRY.
IF SY-SUBRC <> 0.
WRITE: / '調(diào)用***失敗!' , err_text.
ENDIF.
-------------------------------------
詳細(xì)的信息可以參加下面的內(nèi)容:
http://blog.csdn.net/CompassButton/archive/2007/04/03/1550818.aspx
1、異常分類
從sap 6.10開始,abap的異常分為兩類:1)基于異常類的異常,2)非類異常。非類異常又分為系統(tǒng)定義異常(如:被0除異常)和用戶自定義異常(用戶自定義函數(shù)中由exception語句定義,raise語句產(chǎn)生的異常)。
異常有的是可以截獲處理,用戶可以截獲做相應(yīng)處理,系統(tǒng)將可以繼續(xù)執(zhí)行程序。如果用戶不處理,系統(tǒng)將產(chǎn)生錯誤,并停止執(zhí)行程序。有的異常為不可截獲的錯誤異常,系統(tǒng)將直接產(chǎn)生錯誤,并停止執(zhí)行程序。
2、異常處理語句
基于類異常相關(guān)語句:
a)TRY.?
... guarded section?
CATCH cx11 ... cx1n [INTO ex1].?
... handlers for exceptions cx11 to cx1n?
CATCH cx21 ... cx2m [INTO ex2].?
... handlers for exceptions cx21 bis cx2m?
... other handlers?
CLEANUP.?
... cleanup block?
ENDTRY.?
b)RAISE EXCEPTION TYPE class.?
c)RAISING cx1 ... cxn
非類異常相關(guān)語句:
a)catch system-exceptions ARITHMETIC_ERRORS = 4.?
....
endcatch.?
c) raise (In function or method)
3、異常截獲處理方法
Handling exceptions using/with exception classes 截獲處理方法
data MYREF type ref to CX_SY_ARITHMETIC_ERROR.?
data ERR_TEXT type STRING.?
data RESULT type I.?
try.?
RESULT = 1 / 0.?
catch cx_sy_arithmetic_error into MYREF.?
ERR_TEXT = MYREF->GET_TEXT( ).?
endtry.?
Handling exceptions as catchable runtime errors (向后兼容6.10)
此異常處理sap建議使用try...endtry代替(錯誤和異常類對應(yīng)關(guān)系參見第5部分)。
data RESULT type I.?
catch system-exceptions ARITHMETIC_ERRORS = 4.?
RESULT = 1 / 0.?
endcatch.?
if SY-SUBRC = 4.?
...?
endif.?
4、代碼樣例
a)RAISING cx1 ... cxn
form adbc_exists_view using view_name type dd25l-viewname
changing subrc type sy-subrc
raising cx_sql_exception.
data: stmt type string,
ref type ref to data,
stmt_ref type ref to cl_sql_statement,
res_ref type ref to cl_sql_result_set,
cnt type sy-tabix.
subrc = 4.
create object stmt_ref.
get reference of view_name into ref.
stmt_ref->set_param( ref ).
stmt = 'select count(*) from user_views where view_name = ?'.
res_ref = stmt_ref->execute_query( stmt ).
* Host-Variable zur Ergebnisaufnahme zuordnen
get reference of cnt into ref.
res_ref->set_param( ref ).
res_ref->next( ).
if cnt = 1.
subrc = 0.
endif.
res_ref->close( ).
endform.
form exists_view using view_name type dd25l-viewname
changing subrc type sy-subrc.
try.
perform adbc_exists_view(sdb4fora)
using view_name
changing subrc.
catch cx_sql_exception.
subrc = 8.
endtry.
endform.
b)基于類的異常代碼樣例
5、錯誤與異常類對應(yīng)關(guān)系
Exception group: ARITHMETIC_ERRORS?
Class-based Exceptions Definition
*----------------------------------------------------------------------** CLASS class_exception DEFINITION*----------------------------------------------------------------------** All Exception Class must inherit from Class CX_ROOT or its subclass*----------------------------------------------------------------------*CLASS class_exception DEFINITION INHERITING FROM cx_static_check. PUBLIC SECTION. METHODS write_msg.ENDCLASS. "CX_SAMPLE_EXCEPTION DEFINITION
Class-based Exceptions Implementation
*----------------------------------------------------------------------** CLASS class_exception IMPLEMENTATION*----------------------------------------------------------------------*CLASS class_exception IMPLEMENTATION. METHOD write_msg. WRITE / 'Method of Class class_exception'. ENDMETHOD. ":ENDCLASS. "class_exception IMPLEMENTATION
Class main Definition
*----------------------------------------------------------------------** CLASS main DEFINITION*----------------------------------------------------------------------*CLASS main DEFINITION. PUBLIC SECTION.* This method use the class exceptions class_exception* to deal with error. To do this we use the statement RAISING METHODS action RAISING class_exception.ENDCLASS. "main DEFINITION
Class main Implementation
*----------------------------------------------------------------------** CLASS main IMPLEMENTATION*----------------------------------------------------------------------*CLASS main IMPLEMENTATION. METHOD action.* Here we're raising an exception that should be Treated by* exception class class_exception RAISE EXCEPTION TYPE class_exception. ENDMETHOD. "actionENDCLASS. "main IMPLEMENTATION
Defining Objects
DATA o_exception TYPE REF TO class_exception.DATA o_main TYPE REF TO main.
Instance Creation
START-OF-SELECTION. CREATE OBJECT o_main.
Calling Methods
* The statement TRY must be used to define a block that CATCH the exceptions TRY. o_main->action( ).* The Statement CATCH define a block that catches the exceptions of the* exception class class_exception CATCH class_exception. WRITE / 'Exception Caught'. ENDTRY.* The statement TRY must be used to define a block that CATCH the exceptions TRY. o_main->action( ).* The Statement CATCH define a block that catches the exceptions of the* exception class class_exception CATCH class_exception INTO o_exception. WRITE / 'Exception Caught'. o_exception->write_msg( ). ENDTRY.
(Associated superclass: CX_SY_ARITHMETIC_ERROR)?
BCD_ZERODIVIDE CX_SY_ZERODIVIDE?
COMPUTE_FLOAT_ZERODIVIDE CX_SY_ZERODIVIDE?
COMPUTE_INT_ZERODIVIDE CX_SY_ZERODIVIDE?
ADDF_INT_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
BCD_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_BCD_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_COSH_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_EXP_RANGE CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_FLOAT_DIV_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_FLOAT_MINUS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_FLOAT_PLUS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_FLOAT_TIMES_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_INT_ABS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_INT_DIV_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_INT_MINUS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_INT_PLUS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_INT_TIMES_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_LOG10_ERROR CX_SY_ARITHMETIC_OVERFLOW, CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_LOG_ERROR CX_SY_ARITHMETIC_OVERFLOW, CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_MATH_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_POW_RANGE CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_SINH_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_ACOS_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_ASIN_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_ATAN_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_COSH_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_COS_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_EXP_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_MATH_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_POW_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_SINH_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_SIN_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_SQRT_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_TANH_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_COS_LOSS CX_SY_PRECISION_LOSS?
COMPUTE_MATH_LOSS CX_SY_PRECISION_LOSS?
COMPUTE_SIN_LOSS CX_SY_PRECISION_LOSS?
COMPUTE_TAN_LOSS CX_SY_PRECISION_LOSS?
BCD_FIELD_OVERFLOW CX_SY_CONVERSION_OVERFLOW?
Exception group: CONVERSION_ERRORS?
(Associated superclass: CX_SY_CONVERSION_ERROR)?
BCD_FIELD_OVERFLOW CX_SY_CONVERSION_OVERFLOW?
CONVT_OVERFLOW CX_SY_CONVERSION_OVERFLOW?
CONVT_CODEPAGE CX_SY_CONVERSION_CODEPAGE?
CONVT_NO_NUMBER CX_SY_CONVERSION_NO_NUMBER?
BCD_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
Exception group: CREATE_DATA_ERRORS?
(Associated superclass: CX_SY_CREATE_ERROR)?
This group contains runtime errors that may occur during the creation of data objects.?
CREATE_DATA_UNKNOWN_TYPE CX_SY_CREATE_DATA_ERROR?
CREATE_DATA_NOT_ALLOWED_TYPE CX_SY_CREATE_DATA_ERROR?
CREATE_DATA_LEN_NOT_ALLOWED CX_SY_CREATE_DATA_ERROR?
CREATE_DATA_ILLEGAL_LENGTH CX_SY_CREATE_DATA_ERROR?
CREATE_DATA_ILLEGAL_DECIMALS CX_SY_CREATE_DATA_ERROR?
CREATE_DATA_ILLEGAL_INIT_SIZE CX_SY_CREATE_DATA_ERROR?
Exception group: CREATE_OBJECT_ERRORS?
(Associated superclass: CX_SY_CREATE_ERROR)?
This group contains runtime errors that may occur during the creation of objects.?
CREATE_OBJECT_CLASS_NOT_FOUND CX_SY_CREATE_OBJECT_ERROR?
CREATE_OBJECT_CLASS_ABSTRACT CX_SY_CREATE_OBJECT_ERROR?
CREATE_OBJECT_CREATE_PRIVATE CX_SY_CREATE_OBJECT_ERROR?
CREATE_OBJECT_CREATE_PROTECTED CX_SY_CREATE_OBJECT_ERROR?
Exception group: DATA_ACCESS_ERRORS?
(Associated superclass: CX_SY_DATA_ACCESS_ERROR)?
This group contains runtime errors that may occur during subfield access (with offset/length) to data objects.?
DATA_OFFSET_NEGATIVE CX_SY_RANGE_OUT_OF_BOUNDS?
DATA_LENGTH_NEGATIVE CX_SY_RANGE_OUT_OF_BOUNDS?
DATA_LENGTH_0 CX_SY_RANGE_OUT_OF_BOUNDS?
DATA_LENGTH_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS?
DATA_OFFSET_LENGTH_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS?
REFI_WRONG_SECTION CX_SY_RANGE_OUT_OF_BOUNDS?
STRING_OFFSET_NEGATIVE CX_SY_RANGE_OUT_OF_BOUNDS?
STRING_OFFSET_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS?
STRING_LENGTH_NEGATIVE CX_SY_RANGE_OUT_OF_BOUNDS?
STRING_LENGTH_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS?
STRING_OFFSET_LENGTH_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS?
DATA_OFFSET_LENGTH_NOT_ALLOWED CX_SY_OFFSET_NOT_ALLOWED?
Since a subfield access can occur in almost all statements, no keywords can be assigned.?
Exception group: DYNAMIC_CALL_METHOD_ERRORS?
(Associated superclass: CX_SY_DYN_CALL_ERROR)?
This group contains runtime errors that may occur during a dynamic method call. These are normally errors that trigger a syntax error if the call is static.?
DYN_CALL_METH_CLASS_ABSTRACT CX_SY_DYN_CALL_ILLEGAL_CLASS?
DYN_CALL_METH_CLASS_NOT_FOUND CX_SY_DYN_CALL_ILLEGAL_CLASS?
DYN_CALL_METH_CLASSCONSTRUCTOR CX_SY_DYN_CALL_ILLEGAL_METHOD?
DYN_CALL_METH_CONSTRUCTOR CX_SY_DYN_CALL_ILLEGAL_METHOD?
DYN_CALL_METH_NOT_FOUND CX_SY_DYN_CALL_ILLEGAL_METHOD?
DYN_CALL_METH_NO_CLASS_METHOD CX_SY_DYN_CALL_ILLEGAL_METHOD?
DYN_CALL_METH_PRIVATE CX_SY_DYN_CALL_ILLEGAL_METHOD?
DYN_CALL_METH_PROTECTED CX_SY_DYN_CALL_ILLEGAL_METHOD?
DYN_CALL_METH_EXCP_NOT_FOUND CX_SY_DYN_CALL_EXCP_NOT_FOUND?
DYN_CALL_METH_PARAM_KIND CX_SY_DYN_CALL_ILLEGAL_TYPE?
DYN_CALL_METH_PARAM_LITL_MOVE CX_SY_DYN_CALL_ILLEGAL_TYPE?
DYN_CALL_METH_PARAM_TAB_TYPE CX_SY_DYN_CALL_ILLEGAL_TYPE?
DYN_CALL_METH_PARAM_TYPE CX_SY_DYN_CALL_ILLEGAL_TYPE?
DYN_CALL_METH_PARAM_MISSING CX_SY_DYN_CALL_PARAM_MISSING?
DYN_CALL_METH_PARREF_INITIAL CX_SY_DYN_CALL_PARAM_MISSING?
DYN_CALL_METH_PARAM_NOT_FOUND CX_SY_DYN_CALL_PARAM_NOT_FOUND?
DYN_CALL_METH_REF_IS_INITIAL CX_SY_REF_IS_INITIAL?
The following keywords are assigned to this exception group:?
CALL METHOD?
Exception group: FILE_ACCESS_ERRORS?
(Associated superclass: CX_SY_FILE_ACCESS_ERROR)?
This group contains runtime errors that may occur during file access. Typical examples are if the system cannot find the file, if no more space is available to write or create the file, or if the authorization to access the file is missing.?
DATASET_CANT_CLOSE CX_SY_FILE_CLOSE?
DATASET_CANT_OPEN CX_SY_FILE_OPEN?
EXPORT_DATASET_CANNOT_OPEN CX_SY_FILE_OPEN?
DATASET_WRITE_ERROR CX_SY_FILE_IO?
DATASET_READ_ERROR CX_SY_FILE_IO?
EXPORT_DATASET_WRITE_ERROR CX_SY_FILE_IO?
DATASET_SEEK_ERROR CX_SY_FILE_POSITION?
DATASET_NO_POSITION CX_SY_FILE_POSITION?
DATASET_READ_ONLY CX_SY_FILE_OPEN_MODE?
DATASET_NOT_OPEN CX_SY_FILE_OPEN_MODE?
OPEN_DATASET_NO_AUTHORITY CX_SY_FILE_AUTHORITY?
OPEN_PIPE_NO_AUTHORITY CX_SY_FILE_AUTHORITY?
DATASET_TOO_MANY_FILES CX_SY_TOO_MANY_FILES?
DATASET_NO_PIPE CX_SY_PIPES_NOT_SUPPORTED?
Exception group: IMPORT_MISMATCH_ERRORS?
(Common class: CX_SY_IMPORT_MISMATCH_ERROR)?
This group contains runtime errors that may occur during the import of data?
from the ABAP memory,?
from the database,?
from the SHARED BUFFER, or?
from a file?
if the type or the length of the data stored is not identical with that of the target type.?
CONNE_IMPORT_WRONG_COMP_DECS CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_COMP_LENG CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_COMP_TYPE CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_FIELD_DECS CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_FIELD_LENG CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_FIELD_TYPE CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_OBJECT_TYPE CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_STRUCTURE CX_SY_IMPORT_MISMATCH_ERROR?
IMPORT_ALIGNMENT_MISMATCH CX_SY_IMPORT_MISMATCH_ERROR?
IMPORT_WRONG_END_POS CX_SY_IMPORT_MISMATCH_ERROR?
Exception group: LOCALIZATION_ERRORS?
(Common class: CX_SY_LOCALIZATION_ERROR)?
This group contains runtime errors that may occur when you switch to another text environment. Typical examples are if the required language is not allowed or if the system wants to switch to a character set which has not been released.?
TEXTENV_CODEPAGE_NOT_ALLOWED CX_SY_LOCALIZATION_ERROR?
TEXTENV_INVALID CX_SY_LOCALIZATION_ERROR?
TEXTENV_KEY_INVALID CX_SY_LOCALIZATION_ERROR?
Exception group: REMOTE_CALL_ERRORS?
(Associated superclass: CX_SY_REMOTE_CALL_ERROR)?
This group contains runtime errors that may occur during calls in remote systems (currently only CALL METHOD). Typical examples are network errors or the unexpected termination of the connection.?
RMC_COMMUNICATION_FAILURE CX_SY_RMC_COMM_FAILURE?
RMC_INVALID_STATUS CX_SY_RMC_INVALID_STATUS?
RMC_SYSTEM_FAILURE CX_SY_RMC_SYSTEM_FAILURE?
CALL METHOD?
Not assigned to an exception group:?
ASSIGN_CASTING_ILLEGAL_CAST CX_SY_ASSIGN_CAST_ILLEGAL_CAST?
ASSIGN_CASTING_UNKNOWN_TYPE CX_SY_ASSIGN_CAST_UNKNOWN_TYPE?
ASSIGN_FIELD_NOT_IN_RANGE CX_SY_ASSIGN_OUT_OF_RANGE?
DATASET_OFFSET_TOO_LARGE CX_SY_FILE_POSITION?
DYN_CALL_METH_NOT_IMPLEMENTED CX_SY_DYN_CALL_ILLEGAL_METHOD?
EXPORT_BUFFER_NO_MEMORY CX_SY_EXPORT_BUFFER_NO_MEMORY?
GENERATE_SUBPOOL_DIR_FULL CX_SY_GENERATE_SUBPOOL_FULL?
MOVE_CAST_ERROR CX_SY_MOVE_CAST_ERROR?
PERFORM_PROGRAM_NAME_TOO_LONG CX_SY_PROGRAM_NOT_FOUND?
REPLACE_INFINITE_LOOP CX_SY_REPLACE_INFINITE_LOOP?
6、類異常類樹
CX_SY_ROOT?
|?
|--CX_STATIC_CHECK?
|?
|--CX_DYNAMIC_CHECK?
| |?
| |--CX_SY_ARITHMETIC_ERROR?
| | |?
| | |--CX_SY_ZERODIVIDE?
| | |?
| | |--CX_SY_ARITHMETIC_OVERFLOW?
| | |?
| | |--CX_SY_ARG_OUT_OF_DOMAIN?
| | |?
| | |--CX_SY_PRECISION_LOSS?
| |?
| |--CX_SY_ASSIGN_ERROR?
| | |?
| | |--CX_SY_ASSIGN_CAST_ERROR?
| | | |?
| | | |--CX_SY_ASSIGN_CAST_ILLEGAL_CAST?
| | | |?
| | | |--CX_SY_ASSIGN_CAST_UNKNOWN_TYPE?
| | |?
| | |--CX_SY_ASSIGN_OUT_OF_RANGE?
| |?
| |--CX_SY_CODEPAGE_CONVERTER_INIT?
| |?
| |--CX_SY_CONVERSION_ERROR?
| | |?
| | |--CX_SY_CONVERSION_OVERFLOW?
| | |?
| | |--CX_SY_CONVERSION_NO_NUMBER?
| | |?
| | |--CX_SY_CONVERSION_CODEPAGE?
| | |?
| | |--CX_SY_CONVERSION_BASE64?
| | |?
| | |--CX_SY_CONV_ILLEGAL_DATE_TIME?
| |?
| |--CX_SY_CREATE_ERROR?
| | |?
| | |--CX_SY_CREATE_OBJECT_ERROR?
| | |?
| | |--CX_SY_CREATE_DATA_ERROR?
| |?
| |--CX_SY_DATA_ACCESS_ERROR?
| | |?
| | |--CX_SY_RANGE_OUT_OF_BOUNDS?
| | |?
| | |--CX_SY_OFFSET_NOT_ALLOWED?
| |?
| |--CX_SY_DYN_CALL_ERROR?
| | |?
| | |--CX_SY_DYN_CALL_ILLEGAL_CLASS?
| | |?
| | |--CX_SY_DYN_CALL_ILLEGAL_FUNC?
| | |?
| | |--CX_SY_DYN_CALL_ILLEGAL_METHOD?
| | |?
| | |--CX_SY_DYN_CALL_PARAMETER_ERROR?
| | |?
| | |--CX_SY_DYN_CALL_EXCP_NOT_FOUND?
| | |?
| | |--CX_SY_DYN_CALL_ILLEGAL_TYPE?
| | |?
| | |--CX_SY_DYN_CALL_PARAM_MISSING?
| | |?
| | |--CX_SY_DYN_CALL_PARAM_NOT_FOUND?
| |?
| |--CX_SY_FILE_ACCESS_ERROR?
| | |?
| | |--CX_SY_FILE_AUTHORITY?
| | |?
| | |--CX_SY_FILE_CLOSE?
| | |?
| | |--CX_SY_FILE_IO?
| | |?
| | |--CX_SY_FILE_POSITION?
| | |?
| | |--CX_SY_FILE_OPEN_MODE?
| | |?
| | |--CX_SY_FILE_OPEN?
| |?
| |--CX_SY_GEN_SOURCE_TOO_WIDE?
| |?
| |--CX_SY_IMPORT_MISMATCH_ERROR?
| |?
| |--CX_SY_MOVE_CAST_ERROR?
| |?
| |--CX_SY_PROGRAM_NOT_FOUND?
| |?
| |--CX_SY_PROVIDE_EXCEPTION?
| | |?
| | |--CX_SY_PROVIDE_INTERVAL_OVERLAP?
| | |?
| | |--CX_SY_PROVIDE_TABLE_NOT_SORTED?
| |?
| |--CX_SY_READ_SRC_LINE_TOO_LONG?
| |?
| |--CX_SY_REF_IS_INITIAL?
| |?
| |--CX_SY_REPLACE_INFINITE_LOOP?
| |?
| |--CX_SY_SCAN_SOURCE_TOO_WIDE?
| |?
| |--CX_SY_SQL_ERROR?
| | |?
| | |--CX_SY_OPEN_SQL_ERROR?
| | | |?
| | | |--CX_SY_OPEN_SQL_DB?
| | | |?
| | | |--CX_SY_DYNAMIC_OSQL_ERROR?
| | | |?
| | | |--CX_SY_DYNAMIC_OSQL_SEMANTICS?
| | | |?
| | | |--CX_SY_DYNAMIC_OSQL_SYNTAX?
| | |?
| | |--CX_SY_NATIVE_SQL_ERROR?
| |?
| |--CX_SY_WRITE_SRC_LINE_TOO_LONG?
|?
|--CX_NO_CHECK?
|?
|--CX_SY_EXPORT_NO_SHARED_MEMORY?
|?
|--CX_SY_EXPORT_BUFFER_NO_MEMORY?
|?
|--CX_SY_GENERATE_SUBPOOL_FULL?
|?
|--CX_SY_LOCALIZATION_ERROR?
|?
|--CX_SY_NO_HANDLER?
|?
|--CX_SY_PIPES_NOT_SUPPORTED?
|?
|--CX_SY_PIPE_REOPEN?
|?
|--CX_SY_REMOTE_CALL_ERROR?
| |?
| |--CX_SY_RMC_COMM_FAILURE?
| |?
| |--CX_SY_RMC_INVALID_STATUS?
| |?
| |--CX_SY_RMC_SYSTEM_FAILURE?
|?
|--CX_SY_TOO_MANY_FILES?
1.數(shù)據(jù)庫異常:
DATA: lcx_error TYPE REF TO cx_root. "cx_sy_sql_error . "cx_sy_open_sql_db.
DATA i_tab LIKE TABLE OF spfli WITH HEADER LINE.
DATA err_text TYPE c LENGTH 1000.
TRY.
INSERT spfli FROM TABLE i_tab.
CATCH cx_sy_open_sql_db INTO lcx_error.
err_text = lcx_error->get_text( ). "得到錯誤信息
sy-subrc = 4. "改變系統(tǒng)變量
ENDTRY.
IF sy-subrc <> 0.
WRITE :/ '數(shù)據(jù)更新失敗!'.
WRITE err_text.
ROLLBACK WORK.
ELSE.
WRITE :/ '數(shù)據(jù)更新成功!'.
COMMIT WORK.
ENDIF.
2.RFC異常:
TRY.
CALL FUNCTION 'Z_DAQ_CALL_JCO'
DESTINATION 'ZJCOSERVER_DAQ'
EXPORTING
pv_empid = l_empid
IMPORTING
pv_rlt = l_rlt
TABLES
it_spfli = i_tab
EXCEPTIONS
system_failure = 1 MESSAGE err_text
communication_failure = 2 MESSAGE err_text.
ENDTRY.
IF SY-SUBRC <> 0.
WRITE: / '調(diào)用***失敗!' , err_text.
ENDIF.
-------------------------------------
詳細(xì)的信息可以參加下面的內(nèi)容:
http://blog.csdn.net/CompassButton/archive/2007/04/03/1550818.aspx
1、異常分類
從sap 6.10開始,abap的異常分為兩類:1)基于異常類的異常,2)非類異常。非類異常又分為系統(tǒng)定義異常(如:被0除異常)和用戶自定義異常(用戶自定義函數(shù)中由exception語句定義,raise語句產(chǎn)生的異常)。
異常有的是可以截獲處理,用戶可以截獲做相應(yīng)處理,系統(tǒng)將可以繼續(xù)執(zhí)行程序。如果用戶不處理,系統(tǒng)將產(chǎn)生錯誤,并停止執(zhí)行程序。有的異常為不可截獲的錯誤異常,系統(tǒng)將直接產(chǎn)生錯誤,并停止執(zhí)行程序。
2、異常處理語句
基于類異常相關(guān)語句:
a)TRY.?
... guarded section?
CATCH cx11 ... cx1n [INTO ex1].?
... handlers for exceptions cx11 to cx1n?
CATCH cx21 ... cx2m [INTO ex2].?
... handlers for exceptions cx21 bis cx2m?
... other handlers?
CLEANUP.?
... cleanup block?
ENDTRY.?
b)RAISE EXCEPTION TYPE class.?
c)RAISING cx1 ... cxn
非類異常相關(guān)語句:
a)catch system-exceptions ARITHMETIC_ERRORS = 4.?
....
endcatch.?
c) raise (In function or method)
3、異常截獲處理方法
Handling exceptions using/with exception classes 截獲處理方法
data MYREF type ref to CX_SY_ARITHMETIC_ERROR.?
data ERR_TEXT type STRING.?
data RESULT type I.?
try.?
RESULT = 1 / 0.?
catch cx_sy_arithmetic_error into MYREF.?
ERR_TEXT = MYREF->GET_TEXT( ).?
endtry.?
Handling exceptions as catchable runtime errors (向后兼容6.10)
此異常處理sap建議使用try...endtry代替(錯誤和異常類對應(yīng)關(guān)系參見第5部分)。
data RESULT type I.?
catch system-exceptions ARITHMETIC_ERRORS = 4.?
RESULT = 1 / 0.?
endcatch.?
if SY-SUBRC = 4.?
...?
endif.?
4、代碼樣例
a)RAISING cx1 ... cxn
form adbc_exists_view using view_name type dd25l-viewname
changing subrc type sy-subrc
raising cx_sql_exception.
data: stmt type string,
ref type ref to data,
stmt_ref type ref to cl_sql_statement,
res_ref type ref to cl_sql_result_set,
cnt type sy-tabix.
subrc = 4.
create object stmt_ref.
get reference of view_name into ref.
stmt_ref->set_param( ref ).
stmt = 'select count(*) from user_views where view_name = ?'.
res_ref = stmt_ref->execute_query( stmt ).
* Host-Variable zur Ergebnisaufnahme zuordnen
get reference of cnt into ref.
res_ref->set_param( ref ).
res_ref->next( ).
if cnt = 1.
subrc = 0.
endif.
res_ref->close( ).
endform.
form exists_view using view_name type dd25l-viewname
changing subrc type sy-subrc.
try.
perform adbc_exists_view(sdb4fora)
using view_name
changing subrc.
catch cx_sql_exception.
subrc = 8.
endtry.
endform.
b)基于類的異常代碼樣例
5、錯誤與異常類對應(yīng)關(guān)系
Exception group: ARITHMETIC_ERRORS?
Class-based Exceptions Definition
*----------------------------------------------------------------------** CLASS class_exception DEFINITION*----------------------------------------------------------------------** All Exception Class must inherit from Class CX_ROOT or its subclass*----------------------------------------------------------------------*CLASS class_exception DEFINITION INHERITING FROM cx_static_check. PUBLIC SECTION. METHODS write_msg.ENDCLASS. "CX_SAMPLE_EXCEPTION DEFINITION
Class-based Exceptions Implementation
*----------------------------------------------------------------------** CLASS class_exception IMPLEMENTATION*----------------------------------------------------------------------*CLASS class_exception IMPLEMENTATION. METHOD write_msg. WRITE / 'Method of Class class_exception'. ENDMETHOD. ":ENDCLASS. "class_exception IMPLEMENTATION
Class main Definition
*----------------------------------------------------------------------** CLASS main DEFINITION*----------------------------------------------------------------------*CLASS main DEFINITION. PUBLIC SECTION.* This method use the class exceptions class_exception* to deal with error. To do this we use the statement RAISING METHODS action RAISING class_exception.ENDCLASS. "main DEFINITION
Class main Implementation
*----------------------------------------------------------------------** CLASS main IMPLEMENTATION*----------------------------------------------------------------------*CLASS main IMPLEMENTATION. METHOD action.* Here we're raising an exception that should be Treated by* exception class class_exception RAISE EXCEPTION TYPE class_exception. ENDMETHOD. "actionENDCLASS. "main IMPLEMENTATION
Defining Objects
DATA o_exception TYPE REF TO class_exception.DATA o_main TYPE REF TO main.
Instance Creation
START-OF-SELECTION. CREATE OBJECT o_main.
Calling Methods
* The statement TRY must be used to define a block that CATCH the exceptions TRY. o_main->action( ).* The Statement CATCH define a block that catches the exceptions of the* exception class class_exception CATCH class_exception. WRITE / 'Exception Caught'. ENDTRY.* The statement TRY must be used to define a block that CATCH the exceptions TRY. o_main->action( ).* The Statement CATCH define a block that catches the exceptions of the* exception class class_exception CATCH class_exception INTO o_exception. WRITE / 'Exception Caught'. o_exception->write_msg( ). ENDTRY.
(Associated superclass: CX_SY_ARITHMETIC_ERROR)?
BCD_ZERODIVIDE CX_SY_ZERODIVIDE?
COMPUTE_FLOAT_ZERODIVIDE CX_SY_ZERODIVIDE?
COMPUTE_INT_ZERODIVIDE CX_SY_ZERODIVIDE?
ADDF_INT_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
BCD_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_BCD_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_COSH_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_EXP_RANGE CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_FLOAT_DIV_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_FLOAT_MINUS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_FLOAT_PLUS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_FLOAT_TIMES_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_INT_ABS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_INT_DIV_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_INT_MINUS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_INT_PLUS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_INT_TIMES_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_LOG10_ERROR CX_SY_ARITHMETIC_OVERFLOW, CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_LOG_ERROR CX_SY_ARITHMETIC_OVERFLOW, CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_MATH_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_POW_RANGE CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_SINH_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
COMPUTE_ACOS_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_ASIN_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_ATAN_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_COSH_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_COS_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_EXP_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_MATH_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_POW_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_SINH_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_SIN_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_SQRT_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_TANH_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN?
COMPUTE_COS_LOSS CX_SY_PRECISION_LOSS?
COMPUTE_MATH_LOSS CX_SY_PRECISION_LOSS?
COMPUTE_SIN_LOSS CX_SY_PRECISION_LOSS?
COMPUTE_TAN_LOSS CX_SY_PRECISION_LOSS?
BCD_FIELD_OVERFLOW CX_SY_CONVERSION_OVERFLOW?
Exception group: CONVERSION_ERRORS?
(Associated superclass: CX_SY_CONVERSION_ERROR)?
BCD_FIELD_OVERFLOW CX_SY_CONVERSION_OVERFLOW?
CONVT_OVERFLOW CX_SY_CONVERSION_OVERFLOW?
CONVT_CODEPAGE CX_SY_CONVERSION_CODEPAGE?
CONVT_NO_NUMBER CX_SY_CONVERSION_NO_NUMBER?
BCD_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW?
Exception group: CREATE_DATA_ERRORS?
(Associated superclass: CX_SY_CREATE_ERROR)?
This group contains runtime errors that may occur during the creation of data objects.?
CREATE_DATA_UNKNOWN_TYPE CX_SY_CREATE_DATA_ERROR?
CREATE_DATA_NOT_ALLOWED_TYPE CX_SY_CREATE_DATA_ERROR?
CREATE_DATA_LEN_NOT_ALLOWED CX_SY_CREATE_DATA_ERROR?
CREATE_DATA_ILLEGAL_LENGTH CX_SY_CREATE_DATA_ERROR?
CREATE_DATA_ILLEGAL_DECIMALS CX_SY_CREATE_DATA_ERROR?
CREATE_DATA_ILLEGAL_INIT_SIZE CX_SY_CREATE_DATA_ERROR?
Exception group: CREATE_OBJECT_ERRORS?
(Associated superclass: CX_SY_CREATE_ERROR)?
This group contains runtime errors that may occur during the creation of objects.?
CREATE_OBJECT_CLASS_NOT_FOUND CX_SY_CREATE_OBJECT_ERROR?
CREATE_OBJECT_CLASS_ABSTRACT CX_SY_CREATE_OBJECT_ERROR?
CREATE_OBJECT_CREATE_PRIVATE CX_SY_CREATE_OBJECT_ERROR?
CREATE_OBJECT_CREATE_PROTECTED CX_SY_CREATE_OBJECT_ERROR?
Exception group: DATA_ACCESS_ERRORS?
(Associated superclass: CX_SY_DATA_ACCESS_ERROR)?
This group contains runtime errors that may occur during subfield access (with offset/length) to data objects.?
DATA_OFFSET_NEGATIVE CX_SY_RANGE_OUT_OF_BOUNDS?
DATA_LENGTH_NEGATIVE CX_SY_RANGE_OUT_OF_BOUNDS?
DATA_LENGTH_0 CX_SY_RANGE_OUT_OF_BOUNDS?
DATA_LENGTH_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS?
DATA_OFFSET_LENGTH_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS?
REFI_WRONG_SECTION CX_SY_RANGE_OUT_OF_BOUNDS?
STRING_OFFSET_NEGATIVE CX_SY_RANGE_OUT_OF_BOUNDS?
STRING_OFFSET_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS?
STRING_LENGTH_NEGATIVE CX_SY_RANGE_OUT_OF_BOUNDS?
STRING_LENGTH_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS?
STRING_OFFSET_LENGTH_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS?
DATA_OFFSET_LENGTH_NOT_ALLOWED CX_SY_OFFSET_NOT_ALLOWED?
Since a subfield access can occur in almost all statements, no keywords can be assigned.?
Exception group: DYNAMIC_CALL_METHOD_ERRORS?
(Associated superclass: CX_SY_DYN_CALL_ERROR)?
This group contains runtime errors that may occur during a dynamic method call. These are normally errors that trigger a syntax error if the call is static.?
DYN_CALL_METH_CLASS_ABSTRACT CX_SY_DYN_CALL_ILLEGAL_CLASS?
DYN_CALL_METH_CLASS_NOT_FOUND CX_SY_DYN_CALL_ILLEGAL_CLASS?
DYN_CALL_METH_CLASSCONSTRUCTOR CX_SY_DYN_CALL_ILLEGAL_METHOD?
DYN_CALL_METH_CONSTRUCTOR CX_SY_DYN_CALL_ILLEGAL_METHOD?
DYN_CALL_METH_NOT_FOUND CX_SY_DYN_CALL_ILLEGAL_METHOD?
DYN_CALL_METH_NO_CLASS_METHOD CX_SY_DYN_CALL_ILLEGAL_METHOD?
DYN_CALL_METH_PRIVATE CX_SY_DYN_CALL_ILLEGAL_METHOD?
DYN_CALL_METH_PROTECTED CX_SY_DYN_CALL_ILLEGAL_METHOD?
DYN_CALL_METH_EXCP_NOT_FOUND CX_SY_DYN_CALL_EXCP_NOT_FOUND?
DYN_CALL_METH_PARAM_KIND CX_SY_DYN_CALL_ILLEGAL_TYPE?
DYN_CALL_METH_PARAM_LITL_MOVE CX_SY_DYN_CALL_ILLEGAL_TYPE?
DYN_CALL_METH_PARAM_TAB_TYPE CX_SY_DYN_CALL_ILLEGAL_TYPE?
DYN_CALL_METH_PARAM_TYPE CX_SY_DYN_CALL_ILLEGAL_TYPE?
DYN_CALL_METH_PARAM_MISSING CX_SY_DYN_CALL_PARAM_MISSING?
DYN_CALL_METH_PARREF_INITIAL CX_SY_DYN_CALL_PARAM_MISSING?
DYN_CALL_METH_PARAM_NOT_FOUND CX_SY_DYN_CALL_PARAM_NOT_FOUND?
DYN_CALL_METH_REF_IS_INITIAL CX_SY_REF_IS_INITIAL?
The following keywords are assigned to this exception group:?
CALL METHOD?
Exception group: FILE_ACCESS_ERRORS?
(Associated superclass: CX_SY_FILE_ACCESS_ERROR)?
This group contains runtime errors that may occur during file access. Typical examples are if the system cannot find the file, if no more space is available to write or create the file, or if the authorization to access the file is missing.?
DATASET_CANT_CLOSE CX_SY_FILE_CLOSE?
DATASET_CANT_OPEN CX_SY_FILE_OPEN?
EXPORT_DATASET_CANNOT_OPEN CX_SY_FILE_OPEN?
DATASET_WRITE_ERROR CX_SY_FILE_IO?
DATASET_READ_ERROR CX_SY_FILE_IO?
EXPORT_DATASET_WRITE_ERROR CX_SY_FILE_IO?
DATASET_SEEK_ERROR CX_SY_FILE_POSITION?
DATASET_NO_POSITION CX_SY_FILE_POSITION?
DATASET_READ_ONLY CX_SY_FILE_OPEN_MODE?
DATASET_NOT_OPEN CX_SY_FILE_OPEN_MODE?
OPEN_DATASET_NO_AUTHORITY CX_SY_FILE_AUTHORITY?
OPEN_PIPE_NO_AUTHORITY CX_SY_FILE_AUTHORITY?
DATASET_TOO_MANY_FILES CX_SY_TOO_MANY_FILES?
DATASET_NO_PIPE CX_SY_PIPES_NOT_SUPPORTED?
Exception group: IMPORT_MISMATCH_ERRORS?
(Common class: CX_SY_IMPORT_MISMATCH_ERROR)?
This group contains runtime errors that may occur during the import of data?
from the ABAP memory,?
from the database,?
from the SHARED BUFFER, or?
from a file?
if the type or the length of the data stored is not identical with that of the target type.?
CONNE_IMPORT_WRONG_COMP_DECS CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_COMP_LENG CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_COMP_TYPE CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_FIELD_DECS CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_FIELD_LENG CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_FIELD_TYPE CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_OBJECT_TYPE CX_SY_IMPORT_MISMATCH_ERROR?
CONNE_IMPORT_WRONG_STRUCTURE CX_SY_IMPORT_MISMATCH_ERROR?
IMPORT_ALIGNMENT_MISMATCH CX_SY_IMPORT_MISMATCH_ERROR?
IMPORT_WRONG_END_POS CX_SY_IMPORT_MISMATCH_ERROR?
Exception group: LOCALIZATION_ERRORS?
(Common class: CX_SY_LOCALIZATION_ERROR)?
This group contains runtime errors that may occur when you switch to another text environment. Typical examples are if the required language is not allowed or if the system wants to switch to a character set which has not been released.?
TEXTENV_CODEPAGE_NOT_ALLOWED CX_SY_LOCALIZATION_ERROR?
TEXTENV_INVALID CX_SY_LOCALIZATION_ERROR?
TEXTENV_KEY_INVALID CX_SY_LOCALIZATION_ERROR?
Exception group: REMOTE_CALL_ERRORS?
(Associated superclass: CX_SY_REMOTE_CALL_ERROR)?
This group contains runtime errors that may occur during calls in remote systems (currently only CALL METHOD). Typical examples are network errors or the unexpected termination of the connection.?
RMC_COMMUNICATION_FAILURE CX_SY_RMC_COMM_FAILURE?
RMC_INVALID_STATUS CX_SY_RMC_INVALID_STATUS?
RMC_SYSTEM_FAILURE CX_SY_RMC_SYSTEM_FAILURE?
CALL METHOD?
Not assigned to an exception group:?
ASSIGN_CASTING_ILLEGAL_CAST CX_SY_ASSIGN_CAST_ILLEGAL_CAST?
ASSIGN_CASTING_UNKNOWN_TYPE CX_SY_ASSIGN_CAST_UNKNOWN_TYPE?
ASSIGN_FIELD_NOT_IN_RANGE CX_SY_ASSIGN_OUT_OF_RANGE?
DATASET_OFFSET_TOO_LARGE CX_SY_FILE_POSITION?
DYN_CALL_METH_NOT_IMPLEMENTED CX_SY_DYN_CALL_ILLEGAL_METHOD?
EXPORT_BUFFER_NO_MEMORY CX_SY_EXPORT_BUFFER_NO_MEMORY?
GENERATE_SUBPOOL_DIR_FULL CX_SY_GENERATE_SUBPOOL_FULL?
MOVE_CAST_ERROR CX_SY_MOVE_CAST_ERROR?
PERFORM_PROGRAM_NAME_TOO_LONG CX_SY_PROGRAM_NOT_FOUND?
REPLACE_INFINITE_LOOP CX_SY_REPLACE_INFINITE_LOOP?
6、類異常類樹
CX_SY_ROOT?
|?
|--CX_STATIC_CHECK?
|?
|--CX_DYNAMIC_CHECK?
| |?
| |--CX_SY_ARITHMETIC_ERROR?
| | |?
| | |--CX_SY_ZERODIVIDE?
| | |?
| | |--CX_SY_ARITHMETIC_OVERFLOW?
| | |?
| | |--CX_SY_ARG_OUT_OF_DOMAIN?
| | |?
| | |--CX_SY_PRECISION_LOSS?
| |?
| |--CX_SY_ASSIGN_ERROR?
| | |?
| | |--CX_SY_ASSIGN_CAST_ERROR?
| | | |?
| | | |--CX_SY_ASSIGN_CAST_ILLEGAL_CAST?
| | | |?
| | | |--CX_SY_ASSIGN_CAST_UNKNOWN_TYPE?
| | |?
| | |--CX_SY_ASSIGN_OUT_OF_RANGE?
| |?
| |--CX_SY_CODEPAGE_CONVERTER_INIT?
| |?
| |--CX_SY_CONVERSION_ERROR?
| | |?
| | |--CX_SY_CONVERSION_OVERFLOW?
| | |?
| | |--CX_SY_CONVERSION_NO_NUMBER?
| | |?
| | |--CX_SY_CONVERSION_CODEPAGE?
| | |?
| | |--CX_SY_CONVERSION_BASE64?
| | |?
| | |--CX_SY_CONV_ILLEGAL_DATE_TIME?
| |?
| |--CX_SY_CREATE_ERROR?
| | |?
| | |--CX_SY_CREATE_OBJECT_ERROR?
| | |?
| | |--CX_SY_CREATE_DATA_ERROR?
| |?
| |--CX_SY_DATA_ACCESS_ERROR?
| | |?
| | |--CX_SY_RANGE_OUT_OF_BOUNDS?
| | |?
| | |--CX_SY_OFFSET_NOT_ALLOWED?
| |?
| |--CX_SY_DYN_CALL_ERROR?
| | |?
| | |--CX_SY_DYN_CALL_ILLEGAL_CLASS?
| | |?
| | |--CX_SY_DYN_CALL_ILLEGAL_FUNC?
| | |?
| | |--CX_SY_DYN_CALL_ILLEGAL_METHOD?
| | |?
| | |--CX_SY_DYN_CALL_PARAMETER_ERROR?
| | |?
| | |--CX_SY_DYN_CALL_EXCP_NOT_FOUND?
| | |?
| | |--CX_SY_DYN_CALL_ILLEGAL_TYPE?
| | |?
| | |--CX_SY_DYN_CALL_PARAM_MISSING?
| | |?
| | |--CX_SY_DYN_CALL_PARAM_NOT_FOUND?
| |?
| |--CX_SY_FILE_ACCESS_ERROR?
| | |?
| | |--CX_SY_FILE_AUTHORITY?
| | |?
| | |--CX_SY_FILE_CLOSE?
| | |?
| | |--CX_SY_FILE_IO?
| | |?
| | |--CX_SY_FILE_POSITION?
| | |?
| | |--CX_SY_FILE_OPEN_MODE?
| | |?
| | |--CX_SY_FILE_OPEN?
| |?
| |--CX_SY_GEN_SOURCE_TOO_WIDE?
| |?
| |--CX_SY_IMPORT_MISMATCH_ERROR?
| |?
| |--CX_SY_MOVE_CAST_ERROR?
| |?
| |--CX_SY_PROGRAM_NOT_FOUND?
| |?
| |--CX_SY_PROVIDE_EXCEPTION?
| | |?
| | |--CX_SY_PROVIDE_INTERVAL_OVERLAP?
| | |?
| | |--CX_SY_PROVIDE_TABLE_NOT_SORTED?
| |?
| |--CX_SY_READ_SRC_LINE_TOO_LONG?
| |?
| |--CX_SY_REF_IS_INITIAL?
| |?
| |--CX_SY_REPLACE_INFINITE_LOOP?
| |?
| |--CX_SY_SCAN_SOURCE_TOO_WIDE?
| |?
| |--CX_SY_SQL_ERROR?
| | |?
| | |--CX_SY_OPEN_SQL_ERROR?
| | | |?
| | | |--CX_SY_OPEN_SQL_DB?
| | | |?
| | | |--CX_SY_DYNAMIC_OSQL_ERROR?
| | | |?
| | | |--CX_SY_DYNAMIC_OSQL_SEMANTICS?
| | | |?
| | | |--CX_SY_DYNAMIC_OSQL_SYNTAX?
| | |?
| | |--CX_SY_NATIVE_SQL_ERROR?
| |?
| |--CX_SY_WRITE_SRC_LINE_TOO_LONG?
|?
|--CX_NO_CHECK?
|?
|--CX_SY_EXPORT_NO_SHARED_MEMORY?
|?
|--CX_SY_EXPORT_BUFFER_NO_MEMORY?
|?
|--CX_SY_GENERATE_SUBPOOL_FULL?
|?
|--CX_SY_LOCALIZATION_ERROR?
|?
|--CX_SY_NO_HANDLER?
|?
|--CX_SY_PIPES_NOT_SUPPORTED?
|?
|--CX_SY_PIPE_REOPEN?
|?
|--CX_SY_REMOTE_CALL_ERROR?
| |?
| |--CX_SY_RMC_COMM_FAILURE?
| |?
| |--CX_SY_RMC_INVALID_STATUS?
| |?
| |--CX_SY_RMC_SYSTEM_FAILURE?
|?
|--CX_SY_TOO_MANY_FILES?
----------------------------
轉(zhuǎn)載自:http://blog.tianya.cn/blogger/post_read.asp?BlogID=1031752&PostID=13418909
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的【转】 ABAP中的异常处理 - TRY CATCH的使用实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过PDF无纸化测试SAP SmartF
- 下一篇: ALV标准范例Demo汇总