异常处理文档格式.docx
- 文档编号:19728164
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:16
- 大小:19.09KB
异常处理文档格式.docx
《异常处理文档格式.docx》由会员分享,可在线阅读,更多相关《异常处理文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
a)catchsystem-exceptionsARITHMETIC_ERRORS=4.
....
endcatch.
c)raise(Infunctionormethod)
3、异常截获处理方法
Handlingexceptionsusing/withexceptionclasses截获处理方法
dataMYREFtypereftoCX_SY_ARITHMETIC_ERROR.
dataERR_TEXTtypeSTRING.
dataRESULTtypeI.
try.
RESULT=1/0.
catchcx_sy_arithmetic_errorintoMYREF.
ERR_TEXT=MYREF->
GET_TEXT().
endtry.
Handlingexceptionsascatchableruntimeerrors(向后兼容6.10)
此异常处理sap建议使用try...endtry代替(错误和异常类对应关系参见第5部分)。
catchsystem-exceptionsARITHMETIC_ERRORS=4.
ifSY-SUBRC=4.
...
endif.
4、代码样例
a)RAISINGcx1...cxn
formadbc_exists_viewusingview_nametypedd25l-viewname
changingsubrctypesy-subrc
raisingcx_sql_exception.
data:
stmttypestring,
reftypereftodata,
stmt_reftypereftocl_sql_statement,
res_reftypereftocl_sql_result_set,
cnttypesy-tabix.
subrc=4.
createobjectstmt_ref.
getreferenceofview_nameintoref.
stmt_ref->
set_param(ref).
stmt='
selectcount(*)fromuser_viewswhereview_name=?
'
.
res_ref=stmt_ref->
execute_query(stmt).
*Host-VariablezurErgebnisaufnahmezuordnen
getreferenceofcntintoref.
res_ref->
next().
ifcnt=1.
subrc=0.
endif.
close().
endform.
formexists_viewusing
view_nametypedd25l-viewname
changingsubrc
typesy-subrc.
try.
performadbc_exists_view(sdb4fora)
usingview_name
changingsubrc.
catchcx_sql_exception.
subrc=8.
endtry.
b)基于类的异常代码样例
5、错误与异常类对应关系
Exceptiongroup:
ARITHMETIC_ERRORS
Class-basedExceptionsDefinition
*----------------------------------------------------------------------*
*CLASSclass_exceptionDEFINITION
*AllExceptionClassmustinheritfromClassCX_ROOToritssubclass
CLASSclass_exceptionDEFINITIONINHERITINGFROMcx_static_check.
PUBLICSECTION.
METHODSwrite_msg.
ENDCLASS."
CX_SAMPLE_EXCEPTIONDEFINITION
Class-basedExceptionsImplementation
*CLASSclass_exceptionIMPLEMENTATION
CLASSclass_exceptionIMPLEMENTATION.
METHODwrite_msg.
WRITE/'
MethodofClassclass_exception'
ENDMETHOD."
:
class_exceptionIMPLEMENTATION
ClassmainDefinition
*CLASSmainDEFINITION
CLASSmainDEFINITION.
*Thismethodusetheclassexceptionsclass_exception
*todealwitherror.TodothisweusethestatementRAISING
METHODSactionRAISINGclass_exception.
mainDEFINITION
ClassmainImplementation
*CLASSmainIMPLEMENTATION
CLASSmainIMPLEMENTATION.
METHODaction.
*Herewe'
reraisinganexceptionthatshouldbeTreatedby
*exceptionclassclass_exception
RAISEEXCEPTIONTYPEclass_exception.
action
mainIMPLEMENTATION
DefiningObjects
DATAo_exceptionTYPEREFTOclass_exception.
DATAo_mainTYPEREFTOmain.
InstanceCreation
START-OF-SELECTION.
CREATEOBJECTo_main.
CallingMethods
*ThestatementTRYmustbeusedtodefineablockthatCATCHtheexceptions
TRY.
o_main->
action().
*TheStatementCATCHdefineablockthatcatchestheexceptionsofthe
CATCHclass_exception.
ExceptionCaught'
ENDTRY.
CATCHclass_exceptionINTOo_exception.
o_exception->
write_msg().
(Associatedsuperclass:
CX_SY_ARITHMETIC_ERROR)
BCD_ZERODIVIDE
CX_SY_ZERODIVIDE
COMPUTE_FLOAT_ZERODIVIDE
COMPUTE_INT_ZERODIVIDE
ADDF_INT_OVERFLOW
CX_SY_ARITHMETIC_OVERFLOW
BCD_OVERFLOW
COMPUTE_BCD_OVERFLOW
COMPUTE_COSH_OVERFLOW
COMPUTE_EXP_RANGE
COMPUTE_FLOAT_DIV_OVERFLOW
COMPUTE_FLOAT_MINUS_OVERFLOW
COMPUTE_FLOAT_PLUS_OVERFLOW
COMPUTE_FLOAT_TIMES_OVERFLOW
COMPUTE_INT_ABS_OVERFLOW
COMPUTE_INT_DIV_OVERFLOW
COMPUTE_INT_MINUS_OVERFLOW
COMPUTE_INT_PLUS_OVERFLOW
COMPUTE_INT_TIMES_OVERFLOW
COMPUTE_LOG10_ERROR
CX_SY_ARITHMETIC_OVERFLOW,CX_SY_ARG_OUT_OF_DOMAIN
COMPUTE_LOG_ERROR
COMPUTE_MATH_OVERFLOW
COMPUTE_POW_RANGE
COMPUTE_SINH_OVERFLOW
COMPUTE_ACOS_DOMAIN
CX_SY_ARG_OUT_OF_DOMAIN
COMPUTE_ASIN_DOMAIN
COMPUTE_ATAN_DOMAIN
COMPUTE_COSH_DOMAIN
COMPUTE_COS_DOMAIN
COMPUTE_EXP_DOMAIN
COMPUTE_MATH_DOMAIN
COMPUTE_POW_DOMAIN
COMPUTE_SINH_DOMAIN
COMPUTE_SIN_DOMAIN
COMPUTE_SQRT_DOMAIN
COMPUTE_TANH_DOMAIN
COMPUTE_COS_LOSS
CX_SY_PRECISION_LOSS
COMPUTE_MATH_LOSS
COMPUTE_SIN_LOSS
COMPUTE_TAN_LOSS
BCD_FIELD_OVERFLOW
CX_SY_CONVERSION_OVERFLOW
CONVERSION_ERRORS
CX_SY_CONVERSION_ERROR)
CONVT_OVERFLOW
CONVT_CODEPAGE
CX_SY_CONVERSION_CODEPAGE
CONVT_NO_NUMBER
CX_SY_CONVERSION_NO_NUMBER
CREATE_DATA_ERRORS
CX_SY_CREATE_ERROR)
Thisgroupcontainsruntimeerrorsthatmayoccurduringthecreationofdataobjects.
CREATE_DATA_UNKNOWN_TYPE
CX_SY_CREATE_DATA_ERROR
CREATE_DATA_NOT_ALLOWED_TYPE
CREATE_DATA_LEN_NOT_ALLOWED
CREATE_DATA_ILLEGAL_LENGTH
CREATE_DATA_ILLEGAL_DECIMALS
CREATE_DATA_ILLEGAL_INIT_SIZE
CREATE_OBJECT_ERRORS
Thisgroupcontainsruntimeerrorsthatmayoccurduringthecreationofobjects.
CREATE_OBJECT_CLASS_NOT_FOUND
CX_SY_CREATE_OBJECT_ERROR
CREATE_OBJECT_CLASS_ABSTRACT
CREATE_OBJECT_CREATE_PRIVATE
CREATE_OBJECT_CREATE_PROTECTED
DATA_ACCESS_ERRORS
CX_SY_DATA_ACCESS_ERROR)
Thisgroupcontainsruntimeerrorsthatmayoccurduringsubfieldaccess(withoffset/length)todataobjects.
DATA_OFFSET_NEGATIVE
CX_SY_RANGE_OUT_OF_BOUNDS
DATA_LENGTH_NEGATIVE
DATA_LENGTH_0
DATA_LENGTH_TOO_LARGE
DATA_OFFSET_LENGTH_TOO_LARGE
REFI_WRONG_SECTION
STRING_OFFSET_NEGATIVE
STRING_OFFSET_TOO_LARGE
STRING_LENGTH_NEGATIVE
STRING_LENGTH_TOO_LARGE
STRING_OFFSET_LENGTH_TOO_LARGE
DATA_OFFSET_LENGTH_NOT_ALLOWED
CX_SY_OFFSET_NOT_ALLOWED
Sinceasubfieldaccesscanoccurinalmostallstatements,nokeywordscanbeassigned.
DYNAMIC_CALL_METHOD_ERRORS
CX_SY_DYN_CALL_ERROR)
Thisgroupcontainsruntimeerrorsthatmayoccurduringadynamicmethodcall.Thesearenormallyerrorsthattriggerasyntaxerrorifthecallisstatic.
DYN_CALL_METH_CLASS_ABSTRACT
CX_SY_DYN_CALL_ILLEGAL_CLASS
DYN_CALL_METH_CLASS_NOT_FOUND
DYN_CALL_METH_CLASSCONSTRUCTOR
CX_SY_DYN_CALL_ILLEGAL_METHOD
DYN_CALL_METH_CONSTRUCTOR
DYN_CALL_METH_NOT_FOUND
DYN_CALL_METH_NO_CLASS_METHOD
DYN_CALL_METH_PRIVATE
DYN_CALL_METH_PROTECTED
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
DYN_CALL_METH_PARAM_TAB_TYPE
DYN_CALL_METH_PARAM_TYPE
CX_SY_DYN_CA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 异常 处理