技术开发 频道

ABAP异常处理

【IT168 技术文章】

     1、异常分类
    从sap 6.10开始,abap的异常分为两类:1)基于异常类的异常,2)非类异常。非类异常又分为系统定义异常(如:被0除异常)和用户自定义异常(用户自定义函数中由exception语句定义,raise语句产生的异常)。
    异常有的是可以截获处理,用户可以截获做相应处理,系统将可以继续执行程序。如果用户不处理,系统将产生错误,并停止执行程序。有的异常为不可截获的错误异常,系统将直接产生错误,并停止执行程序。
    2、异常处理语句
    基于类异常相关语句:
    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
    非类异常相关语句:
    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代替(错误和异常类对应关系参见第5部分)。
    data RESULT type I.
    catch system-exceptions ARITHMETIC_ERRORS = 4.
    RESULT = 1 / 0.
    endcatch.
    if SY-SUBRC = 4.
    ...
    endif.
 

0
相关文章