擅用ABAP错误捕捉,避免系统Dump
有时候我们在写程序时,会因为计算公式不符合算术表达式,计算公式的字段值不是纯数值等等问题造成程序dump,这个时候我们在无法避免字段赋值错误的情况下,又不想程序dump可以采取catch异常的方法进行避免:


然后在程序中做catch处理,便能避免造成dump了
DATA:lv_cs TYPE c LENGTH 4,
lv_bcs TYPE i,
lv_err_text TYPE string,
* lr_error TYPE REF TO cx_sy_conversion_no_number,
lr_error TYPE REF TO cx_root,
lv_cj TYPE i. DO 2 TIMES.
CASE sy-index.
WHEN 1.
lv_cs = '12,'.
lv_bcs = '5'.
WHEN 2.
lv_cs = '12'.
lv_bcs = '5'.
WHEN OTHERS.
ENDCASE. TRY.
lv_cj = lv_cs * lv_bcs.
CLEAR lv_err_text.
* CATCH cx_sy_conversion_no_number INTO lr_error.
CATCH cx_root INTO lr_error.
lv_err_text = lr_error->get_text( ).
ENDTRY. IF lv_err_text IS NOT INITIAL.
MESSAGE s000(oo) WITH lv_err_text DISPLAY LIKE 'E'.
WRITE:/ lv_err_text.
ELSE.
WRITE:/ '执行成功'.
ENDIF.
ENDDO.
执行结果:

异常类超类CX_ROOT树状图:
CX_ROOT
|
|--CX_STATIC_CHECK
|
|--CX_DYNAMIC_CHECK
| |
| |--CX_SY_ARITHMETIC_ERROR
| | |
| | |--CX_SY_ZERODIVIDE
| | |
| | |--CX_SY_ARITHMETIC_OVERFLOW
| | |
| | |--CX_SY_ARG_OUT_OF_DOMAIN
| | |
| | |--CX_SY_PRECISION_LOSS
| |
| |--CX_SY_ASSIGN_ERROR
| | |
| | |--CX_SY_ASSIGN_CAST_ERROR
| | | |
| | | |--CX_SY_ASSIGN_CAST_ILLEGAL_CAST
| | | |
| | | |--CX_SY_ASSIGN_CAST_UNKNOWN_TYPE
| | |
| | |--CX_SY_ASSIGN_OUT_OF_RANGE
| |
| |--CX_SY_CODEPAGE_CONVERTER_INIT
| |
| |--CX_SY_CONVERSION_ERROR
| | |
| | |--CX_SY_CONVERSION_CODEPAGE
| | |
| | |--CX_SY_CONVERSION_CODEPAGE_EX
| | |
| | |--CX_SY_CONVERSION_DATA_LOSS
| | |
| | |--CX_SY_CONVERSION_EXACT_NOT_SUP
| | |
| | |--CX_SY_CONVERSION_INEXACT_FLTP
| | |
| | |--CX_SY_CONVERSION_NO_BOOLEAN
| | |
| | |--CX_SY_CONVERSION_NO_DATE_TIME
| | |
| | |--CX_SY_CONVERSION_NO_NUMBER
| | |
| | |--CX_SY_CONVERSION_NO_QNAME
| | |
| | |--CX_SY_CONVERSION_NO_RAW
| | |
| | |--CX_SY_CONVERSION_NO_TIME
| | |
| | |--CX_SY_CONVERSION_NO_UUID
| | |
| | |--CX_SY_CONVERSION_OVERFLOW
| | |
| | |--CX_SY_CONVERSION_ROUNDING
| | |
| | |--CX_SY_CONVERSION_SRC_TOO_SHORT
| | |
| | |--CX_SY_CONVERSION_UNKNOWN_LANGU
| |
| |--CX_SY_CREATE_ERROR
| | |
| | |--CX_SY_CREATE_OBJECT_ERROR
| | |
| | |--CX_SY_CREATE_DATA_ERROR
| |
| |--CX_SY_DATA_ACCESS_ERROR
| | |
| | |--CX_SY_RANGE_OUT_OF_BOUNDS
| | |
| | |--CX_SY_TAB_RANGE_OUT_OF_BOUNDS
| | |
| | |--CX_SY_OFFSET_NOT_ALLOWED
| |
| |--CX_SY_DB_PROCEDURE_CALL
| | |
| | |--CX_SY_DB_PROCEDURE_CONNECTION
| | |
| | |--CX_SY_DB_PROCEDURE_NOT_FOUND
| | |
| | |--CX_SY_DB_PROCEDURE_NOT_SUPP
| | |
| | |--CX_SY_DB_PROCEDURE_OVERFLOW
| | |
| | |--CX_SY_DB_PROCEDURE_PARAMETER
| | |
| | |--CX_SY_DB_PROCEDURE_DYN_IN_OUT
| | |
| | |--CX_SY_DB_PROCEDURE_DYN_MISSING
| | |
| | |--CX_SY_DB_PROCEDURE_DYN_NOT_FND
| | |
| | |--CX_SY_DB_PROCEDURE_TYPE_ERROR
| |
| |--CX_SY_DYN_CALL_ERROR
| | |
| | |--CX_SY_DYN_CALL_ILLEGAL_CLASS
| | |
| | |--CX_SY_DYN_CALL_ILLEGAL_FORM
| | |
| | |--CX_SY_DYN_CALL_ILLEGAL_FUNC
| | |
| | |--CX_SY_DYN_CALL_ILLEGAL_METHOD
| | |
| | |--CX_SY_DYN_CALL_PARAMETER_ERROR
| | |
| | |--CX_SY_DYN_CALL_EXCP_NOT_FOUND
| | |
| | |--CX_SY_DYN_CALL_ILLEGAL_TYPE
| | |
| | |--CX_SY_DYN_CALL_PARAM_MISSING
| | |
| | |--CX_SY_DYN_CALL_PARAM_NOT_FOUND
| |
| |--CX_SY_EXPORT_NO_SHARED_MEMORY
| |
| |--CX_SY_FILE_ACCESS_ERROR
| | |
| | |--CX_SY_FILE_AUTHORITY
| | |
| | |--CX_SY_FILE_CLOSE
| | |
| | |--CX_SY_FILE_IO
| | |
| | |--CX_SY_FILE_OPEN
| | |
| | |--CX_SY_FILE_OPEN_MODE
| | |
| | |--CX_SY_FILE_POSITION
| | |
| | |--CX_SY_FILE_TRUNCATE
| |
| |--CX_SY_FIND_INFINITE_LOOP
| |
| |--CX_SY_GEN_SOURCE_TOO_WIDE
| |
| |--CX_SY_IMPORT_MISMATCH_ERROR
| | |
| | |--CX_SY_IMPORT_FORMAT_ERROR
| |
| |--CX_SY_ITAB_ERROR
| | |
| | |--CX_SY_ITAB_DUPLICATE_KEY
| | |
| | |--CX_SY_ITAB_DYN_LOOP
| | |
| | |--CX_SY_ITAB_LINE_NOT_FOUND
| |
| |--CX_SY_MATCHER
| | |
| | |--CX_SY_REGEX_TOO_COMPLEX
| | |
| | |--CX_SY_INVALID_REGEX_FORMAT
| |
| |--CX_SY_MOVE_CAST_ERROR
| |
| |--CX_SY_PROGRAM_NOT_FOUND
| |
| |--CX_SY_PROVIDE_EXCEPTION
| | |
| | |--CX_SY_PROVIDE_INTERVAL_OVERLAP
| | |
| | |--CX_SY_PROVIDE_TABLE_NOT_SORTED
| |
| |--CX_SY_READ_SRC_LINE_TOO_LONG
| |
| |--CX_SY_REF_IS_INITIAL
| |
| |--CX_SY_REGEX
| | |
| | |--CX_SY_INVALID_REGEX
| |
| |--CX_SY_REPLACE_INFINITE_LOOP
| |
| |--CX_SY_SCAN_SOURCE_TOO_WIDE
| |
| |--CX_SY_SQL_ERROR
| | |
| | |--CX_SY_DB_PROCEDURE
| | | |
| | | |--CX_SY_DB_PROCEDURE_SQL_ERROR
| | |
| | |--CX_SY_EXPIMP_DB_SQL_ERROR
| | |
| | |--CX_SY_OPEN_SQL_ERROR
| | | |
| | | |--CX_SY_OPEN_SQL_DB
| | | |
| | | |--CX_SY_DYNAMIC_OSQL_ERROR
| | | | |
| | | | |--CX_SY_DYNAMIC_OSQL_SEMANTICS
| | | | |
| | | | |--CX_SY_DYNAMIC_OSQL_SYNTAX
| | | |
| | | |--CX_SY_SQL_UNSUPPORTED_FEATURE
| | |
| | |--CX_SY_NATIVE_SQL_ERROR
| |
| |--CX_SY_UNKNOWN_CURRENCY
| |
| |--CX_SY_WRITE_INVALID_STYLE
| |
| |--CX_SY_WRITE_SRC_LINE_TOO_LONG
| |
| |--CX_TRANSFORMATION_ERROR
| |
| |--CX_ST_ERROR
| | |
| | |--CX_ST_CALL_ERROR
| | |
| | |--CX_ST_CALL_METHOD_ERROR
| | |
| | |--CX_ST_CONSTRAINT_ERROR
| | |
| | |--CX_ST_CONDITION
| | |
| | |--CX_ST_DESERIALIZATION_ERROR
| | |
| | |--CX_ST_FORMAT_ERROR
| | |
| | |--CX_ST_INVALID_XML
| | |
| | |--CX_ST_MATCH
| | |
| | |--CX_ST_REF_ACCESS
| | |
| | |--CX_ST_RUNTIME_ERROR
| | |
| | |--CX_ST_SERIALIZATION_ERROR
| |
| |--CX_XSLT_EXCEPTION
| |
| |--CX_XSLT_SYSTEM_ERROR
| |
| |--CX_XSLT_ABAP_CALL_ERROR
| |
| |--CX_XSLT_DESERIALIZATION_ERROR
| |
| |--CX_XSLT_FORMAT_ERROR
| |
| |--CX_XSLT_RUNTIME_ERROR
| |
| |--CX_XSLT_SERIALIZATION_ERROR
| |
| |--CX_SY_TRANS_OPTION_ERROR
|
|--CX_NO_CHECK
|
|--CX_BADI
| |
| |--CX_BADI_CONTEXT_ERROR
| |
| |--CX_BADI_FILTER_ERROR
| |
| |--CX_BADI_INITIAL_CONTEXT
| |
| |--CX_BADI_INITIAL_REFERENCE
| |
| |--CX_BADI_NOT_SINGLE_USE
| | |
| | |--CX_BADI_MULTIPLY_IMPLEMENTED
| | |
| | |--CX_BADI_NOT_IMPLEMENTED
| |
| |--CX_BADI_UNKNOWN_ERROR
|
|--CX_SY_AUTHORIZATION_ERROR
|
|--CX_SY_EXPORT_BUFFER_NO_MEMORY
|
|--CX_SY_GENERATE_SUBPOOL_FULL
|
|--CX_SY_ILLEGAL_HANDLER
|
|--CX_SY_LOCALIZATION_ERROR
|
|--CX_SY_NESTED_PRINT_ON
|
|--CX_SY_NO_HANDLER
|
|--CX_SY_PIPES_NOT_SUPPORTED
|
|--CX_SY_PIPE_REOPEN
|
|--CX_SY_REMOTE_CALL_ERROR
| |
| |--CX_SY_RMC_COMM_FAILURE
| |
| |--CX_SY_RMC_INVALID_STATUS
| |
| |--CX_SY_RMC_SYSTEM_FAILURE
|
|--CX_SY_TOO_MANY_FILES
擅用ABAP错误捕捉,避免系统Dump的更多相关文章
- 【转】段错误调试神器 - Core Dump详解
from:http://www.embeddedlinux.org.cn/html/jishuzixun/201307/08-2594.html 段错误调试神器 - Core Dump详解 来源:互联 ...
- 段错误调试神器 - Core Dump详解
一.前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件某一行, 而是没有任何信息, 使得我们的调试变得 ...
- 【ABAP系列】SAP 系统的消息类型分析 MESSAGE TYPE
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 系统的消息类型分析 ME ...
- MySQL安装过程net start mysql 启动失败 报“错误2,系统找不到文件”的解决办法
MySQL安装过程net start mysql 启动失败 报“错误2,系统找不到文件”的解决办法 错误2,系统找不到文件. 开始...运行... regedit 注册表项: HKEY_LOCAL_ ...
- 基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题
背景 在这越来越发达的网络时代,web应用也是越来越复杂,尤其是前端的开发,也是越来越受重视. 所以在我们前端开发完成后,会有一些列的web应用的上线验证,如自测.QA测试.code review 等 ...
- 运维开发实践——基于Sentry搭建错误日志监控系统
错误日志监控也可称为业务逻辑监控, 旨在对业务系统运行过程中产生的错误日志进行收集归纳和监控告警.似乎有那么点曾相识?没错... 就是提到的“APM应用性能监控”.但它又与APM不同,APM系统主要注 ...
- 【Flask】 python学习第一章 - 3.0 正则转换和错误捕捉
3.1正则转换器定义 Class RegexConverter(BaseConverter): regex = "[0-9]{6}" app.url_map.converters[ ...
- CAD安装错误1625:系统策略禁止这个安装,请与系统管理员联系。
在安装Autodesk CAD/3DMAX/Maya/Revit/Inventor等的时候,出现“安装错误1625:系统策略禁止这个安装,请与系统管理员联系.”,或是Error 1625,同时还会提示 ...
- 错误捕捉过滤器 .NetCore版
前言 继承ExceptionFilterAttribute后,重写OnException函数. 统一捕捉所有报错,格式化返回前端. 代码实现 基类控制器 在基类控制器上添加[ErrorCatch]特性 ...
随机推荐
- 一个http请求的完整详细过程
整个流程 域名解析: 与服务器建立连接:tcp连接: 发起HTTP请求: 服务器响应HTTP请求,浏览器得到html代码: 浏览器解析html代码,并请求html代码中的资源(如js.css.图片): ...
- Docker in Action All In One
Docker in Action All In One Docker https://www.docker.com/play-with-docker https://hub.docker.com/ $ ...
- jQuery 使用注意事项 与 小技巧(tips)
jQuery 使用注意事项 与 小技巧(tips) 1 $( document ).ready() https://learn.jquery.com/using-jquery-core/documen ...
- Java IO 通信 All In One
Java IO 通信 All In One Netty / WebSocket BIO 通信 BIO 即阻塞 I/O,不管是磁盘 I/O 还是网络 I/O,数据在写入 OutputStream 或者从 ...
- SVG & getBBox
SVG & getBBox https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement/getBBox const ...
- nasm astrcmp函数 x86
xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export as ...
- vue2.0用法以及环境配置
一.配置环境搭建 1.安装node.js (可以去官网看) 2.安装git (推荐看廖雪峰文章,点击查看) 3.安装vue: cmd:npm install vue //最新稳定版本 npm inst ...
- Linux安装MySQL_全网最详细
Linux安装MySQL 编辑于2021-02-19 本文中MySQL安装目录为/usr/local/mysql 上传MySQL安装包至/usr/local目录,执行命令解压 [root@JetXi ...
- [转]c++使用thread类时编译出错,对‘pthread_create’未定义的引用
转载地址:https://blog.csdn.net/wuhui20091515/article/details/52531202 例子1 #include <iostream> #inc ...
- [转]ROS学习笔记十一:ROS中数据的记录与重放
本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况.本例子还是以小海龟例程为例. 记录数据(创建一个bag文件) 首先运行小海龟例程 ...