文章目录
- 1、添加异常捕捉
- 2、链式CATCH
- 3、一个CTACH捕捉多个异常
- 4、捕捉所有异常
- 总结
有些代码可以通过语法检查,但运行时会发生错误而崩溃,比如除数是0的情况。对于这类代码,需要使用
TRY
,
CATCH
进行异常捕捉,避免代码崩溃。
1、添加异常捕捉
DATA n1 TYPE i VALUE 2000000000.
DATA n2 TYPE p LENGTH 2 DECIMALS 1 VALUE '0.5'.
DATA result TYPE i.
TRY.
result = n1 / n2.
CATCH cx_sy_arithmetic_overflow.
out->write( 'Overflow.' ).
ENDTRY.
结果超过了i类型的最大值,运行时系统捕捉算法溢出(cx_sy_arithmetic_overflow)
异常,并执行错误处理逻辑。
2、链式CATCH
n2 = 0.
TRY.
result = n1 / n2.
CATCH cx_sy_arithmetic_overflow.
out->write( 'Overflow.' ).
CATCH cx_sy_zerodivide.
out->write( 'Division by zero.' ).
ENDTRY.
当一段代码可能引起多个可预见的异常时,可以同时用多个CATCH
进行异常捕捉。事例代码除数是0,运行时系统跳过算法溢出(cx_sy_arithmetic_overflow)
异常,捕捉除数为0(cx_sy_zerodivide)
异常。
3、一个CTACH捕捉多个异常
TRY.
result = n1 / n2.
CATCH cx_sy_arithmetic_overflow cx_sy_zerodivide.
out->write( 'Overflow / division by zero.' ).
ENDTRY.
可遇见的多个异常,异常处理的逻辑一致,可以使用一个CATCH捕捉多个异常。
4、捕捉所有异常
TRY.
result = n1 / n2.
CATCH cx_root INTO DATA(Exception).
out->write( Exception->get_text( ) ).
ENDTRY.
cx_root
是所有异常类的父类,能捕捉所有异常。简单,尽量别用。
总结
打完收工。