zl程序教程

您现在的位置是:首页 >  后端

当前栏目

ABAP之异常捕获详解

异常 详解 ABAP 捕获
2023-06-13 09:16:32 时间

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.

当0为被除数时

技术总结

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