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

首先我们要明白自己的报错属于什么类型的,如何查看报错类型呢?通过ST22查询报错消息,CX_SY_CONVERSION_NO_NUMBER即是报错时指向的错误类,其实类似于这样的类我们也可以使用它的超类CX_ROOT进行捕捉异常,这样超类下面的所以异常类都能处理捕获相应的异常
 

然后在程序中做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的更多相关文章

  1. 【转】段错误调试神器 - Core Dump详解

    from:http://www.embeddedlinux.org.cn/html/jishuzixun/201307/08-2594.html 段错误调试神器 - Core Dump详解 来源:互联 ...

  2. 段错误调试神器 - Core Dump详解

    一.前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件某一行, 而是没有任何信息, 使得我们的调试变得 ...

  3. 【ABAP系列】SAP 系统的消息类型分析 MESSAGE TYPE

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 系统的消息类型分析 ME ...

  4. MySQL安装过程net start mysql 启动失败 报“错误2,系统找不到文件”的解决办法

    MySQL安装过程net start mysql 启动失败 报“错误2,系统找不到文件”的解决办法 错误2,系统找不到文件. 开始...运行... regedit  注册表项: HKEY_LOCAL_ ...

  5. 基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题

    背景 在这越来越发达的网络时代,web应用也是越来越复杂,尤其是前端的开发,也是越来越受重视. 所以在我们前端开发完成后,会有一些列的web应用的上线验证,如自测.QA测试.code review 等 ...

  6. 运维开发实践——基于Sentry搭建错误日志监控系统

    错误日志监控也可称为业务逻辑监控, 旨在对业务系统运行过程中产生的错误日志进行收集归纳和监控告警.似乎有那么点曾相识?没错... 就是提到的“APM应用性能监控”.但它又与APM不同,APM系统主要注 ...

  7. 【Flask】 python学习第一章 - 3.0 正则转换和错误捕捉

    3.1正则转换器定义 Class RegexConverter(BaseConverter): regex = "[0-9]{6}" app.url_map.converters[ ...

  8. CAD安装错误1625:系统策略禁止这个安装,请与系统管理员联系。

    在安装Autodesk CAD/3DMAX/Maya/Revit/Inventor等的时候,出现“安装错误1625:系统策略禁止这个安装,请与系统管理员联系.”,或是Error 1625,同时还会提示 ...

  9. 错误捕捉过滤器 .NetCore版

    前言 继承ExceptionFilterAttribute后,重写OnException函数. 统一捕捉所有报错,格式化返回前端. 代码实现 基类控制器 在基类控制器上添加[ErrorCatch]特性 ...

随机推荐

  1. kafka——集群安裝部署(自带zookeeper)

    kafka系列文章 第一章 linux单机安装kafka 第二章 kafka--集群安裝部署(自带zookeeper) 一.kafka简介 kafka官网:http://kafka.apache.or ...

  2. 【转】Docker 核心技术与实现原理

    转自:https://draveness.me/docker 提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段 ...

  3. C# opc 功能相关

    C# 程序里,使用 Interop.OPCAutomation.dll ,用于和opc通讯,读opc变量,写opc变量 链接: https://pan.baidu.com/s/1OpUa_Jct1gf ...

  4. Spring-cloud-netflix-hystrix

    服务注册中心eureka-server已经搭好,并且SPRING-CLOUD-NETFLIX-EUREKA-CLIENT-APPLICATION提供一个hello服务 畏怯还编写一个eureka-cl ...

  5. 9. Lock wait timeout exceeded

    一. 现象 用户打开消息推送有概率报错,后续发现推送消息阅读数.点赞数无法正常更新,mysql报警有行锁, DBA抓到有锁表语句,kill该语句未正常恢复,elk日志有大量的java.sql.SQLE ...

  6. 英语能力考试 All In One

    英语能力考试 All In One 托福,雅思,托业 TOEIC 托业考试 Test of English for International Communication (TOEIC) 国际交流英语 ...

  7. How to build a sortable table in native js?

    How to build a sortable table in native/vanilla js? H5 DnD https://developer.mozilla.org/zh-CN/docs/ ...

  8. Axios 取消 Ajax 请求

    Axios 取消 Ajax 请求 Axios XMLHttpRequest https://caniuse.com/?search=XMLHttpRequest https://developer.m ...

  9. CSS3 & Grid Layout All In One

    CSS3 & Grid Layout All In One W3C https://www.w3.org/TR/css-grid-1/ Grid Layout is a new layout ...

  10. js 创建XML

    // 创建xml数据 let doc = document.implementation.createDocument('', 'root', null); // 创建一个文档 let root =d ...