5/365

HELLO,这里是百里,一个学习中的ABAPER,今天学习了一个新技术,当然在其他语言中算不得什么技术,其实就是捕获异常.合理的使用捕获异常可以有效的避免程序ABAPDOWN,或者是反馈异常数据给操作者进行思维判断,都是非常好的应用场景.那么今天就讲一下ABAP中的异常捕获方式吧 .

什么是异常捕获

在代码执行中,肯定会出现难免报错的现象,但是我们又不想用户直接程序终止,或者需要程序告诉我们,是因为什么原因报的错,报的什么类型的错,此时就需要,异常捕获.

异常捕获格式

try {

可能发生异常的代码

} catch(可能出现异常的类型 标识符) {

这种异常出现之后的处理方式

}

没有异常,直接打印try中内容,再打印后续内容 (catch中不执行,不需要捕获)在往下执行正常代码

异常捕获流程

执行流程:
1、执行try中的内容,如果没有异常,try...catch语句直接结束

2、如果有异常,那么就在发生异常的代码位置直接跳转到catch块中,try中后面的代码就不再继续运行了

3、继续匹配各个catch块中的异常类型,从上到下,一旦匹配到某个catch声明的异常类型,就直接执行该catch块的处理方式。处理完成之后,try...catch语句就直接结束了,不会再去匹配后面其他的catch块的异常类型

语法解析

data MYREF type ref to CX_SY_ARITHMETIC_ERROR. 
data ERR_TEXT type STRING.
data RESULT type I.
try.
...
catch cx_sy_arithmetic_error into MYREF.
ERR_TEXT = MYREF->GET_TEXT( ).
endtry.

实例解析

数据定义

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( ).
sy-subrc = 4. "改变系统变量
endtry.

逻辑判断

IF sy-subrc = 0 .
WRITE : '未报错' .
ELSEIF sy-subrc = 4 .
WRITE : ERR_TEXT .
ENDIF.

结果

显而易见,0是不能做被除数的,我们通过IF判断逻辑,如果sy-subrc = 4 时就输出对应的异常值 .

正常操作时

我们让 ​​RESULT = 2 / 1.​

ABAP之异常捕获详解_异常捕获

当0为被除数时

ABAP之异常捕获详解_捕获异常_02

技术总结

今天讲的内容,是异常捕获相关的内容,本文介绍了异常捕获的概念,异常捕获的流程,以及简单的异常捕获demo ,可以轻松上手程序,了解使用方式.

百里鸡汤

有没有人和我一样,总是会莫名的难受,别人问,却说不出一个合理的理由。

这里是百里.明天见.

ABAP之异常捕获详解_异常捕获_03