尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

119、异常处理(TRYCATCHCLEANUP)

119、异常处理(TRYCATCHCLEANUP) 119、异常处理(TRYCATCHCLEANUP)那晚上线上程序又挂了,用户报了个“函数调用被拒绝”的错,我拉出系统日志一看,dump在某个很深的方法里——标准BAPI抛了个异常,程序里压根没接,于是整个会话直接炸掉。最气的是,这个BAPI明明有返回表,返回表里写着错误类型,但没人去看。那之后我养成了个习惯:凡是调外部接口、BAPI、RFC、数据库更新,先问自己一句——“它抛不抛异常?抛了谁接?”这就是今天要聊的TRY/CATCH/CLEANUP。ABAP里的异常处理不是摆设,它其实是程序最后的防线。很多老代码喜欢用SY-SUBRC判断,什么返回值非零就退出,但SY-SUBRC只能处理带返回码的函数,对类方法里RAISE EXCEPTION抛出的东西完全无能为力。你如果不捕获,运行时就会一直往上抛,直到Unhandle Exception产生短转储,用户看到的就是一个红色小图标“Runtime Errors”,然后打电话骂IT。所以我们得学会主动接住它。先看最简单的写法:DATA: lv_lines TYPE i. TRY. lv_lines = lines( itab ). CATCH cx_sy_itab_line_not_found. MESSAGE '这里根本不可能走到,但以防万一' TYPE 'E'. ENDTRY.这个例子没啥实际意义,但结构一眼就懂:TRY里面放可能出错的代码,CATCH后面跟着异常类,中间用冒号连接,可以写多个CATCH块。注意,ABAP的异常类必须继承自CX_ROOT
返回列表