ABAP之异常捕获详解

举报
百里丶落云 发表于 2023/08/30 11:33:38 2023/08/30
【摘要】 序HELLO,这里是百里,一个学习中的ABAPER,今天学习了一个新技术,当然在其他语言中算不得什么技术,其实就是捕获异常.合理的使用捕获异常可以有效的避免程序ABAPDOWN,或者是反馈异常数据给操作者进行思维判断,都是非常好的应用场景.那么今天就讲一下ABAP中的异常捕获方式吧 . 什么是异常捕获在代码执行中,肯定会出现难免报错的现象,但是我们又不想用户直接程序终止,或者需要程序告诉我...

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.
image.png

当0为被除数时

image.png

技术总结

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

百里鸡汤

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

这里是百里.明天见.

9.bmp

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。