SAP ABAP 运行时的错误控制 语法: CATCH SYSTEM-EXCEPTIONS

ABAP部分错误无法在编译期间提示,只能在运行时才能发现错误

当我们在编写ABAP代码时可能会出现各种的错误提示,比如:书写期间的错误,编译期间的错误,运行期间的错误.
今天我们所说的 就是运行期间的错误

1.可捕获的运行时错误

1.1概念

因为我们在编写abap代码是无法确定运行时的变量的值,而静态的检查也不能完全避免运行时的错误.
虽然我们运行时的变量我们在运行之前无法确定,但我们可以通过判断来进行错误的捕获

因为在SAP中可以捕获到运行期间是错误组成一个运行时错误类,通过CATCH控制语句对错误进行处理.

CATCH控制结构类似于IF结构,可以嵌套,
但必须在同一个处理内部结束.
注意:结构只能捕获当前调用级别运行时的错误,不对内部的进行处理.

1.2语法

CATCH SYSTEM-EXCEPTION a = n .... a = n .
	"代码体:如果出现错误程序不会终止,而是直接结束当前的catch语句块.
ENDCATCH.

a表示一个单一可捕获错误或ERROR
n表示一个数字,这数字会赋值给系统变量SY-SBRC
从而我们可以使用IF语句判断该系统变量SY-SUBRC是否等于我们设置的这个n,如果等于就会处理if结构中的代码,而不会Dump掉.

1.3代码

DATA: result TYPE P DECIMALS 3.
      number TYPE VALUE 11.

CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 5.
    do 3 TIMES .
      number = number - 1.
      result = 1 / result.
      WRITE: / number , result.
    ENDDO.
  endcatch.
  SKIP.
  IF sy-subrc = 5.
    WRITE: / '分母为零,错误!'.
  ENDIF.

SAP ABAP 基本运算(加减乘除取余 四舍五入 向上下取整)

1.4结果分析

当前程序触发可捕获的错误BDC_ZERODIVIDE该错误属于系统ERROR类中的ARITHMETIC_ECRRORS并可以被该类捕获
在这里插入图片描述
在debug下我们可以直观的发现ARITHMETIC_ECRRORS = 5 赋值给了系统变量SY-SUBRC
接着在通过 if语句 给出错误提示
在这里插入图片描述

如果我们把代码中的 result = 1 / result.这句注释掉,
DO语句的代码就会被正常输出.
在这里插入图片描述

2.不可捕获的运行时错误

有些的运行时错误是无法捕获的或者没有对其进行捕获一旦出现就dump
可以使用事务码ST22进行查看具体的错误详情.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨天行舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值