有时候我们在写程序时,会因为计算公式不符合算术表达式,计算公式的字段值不是纯数值等等问题造成程序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. 敏捷史话(六):也许这个人能拯救你的代码 —— Robert C. Martin

    Robert C. Martin( 罗伯特·C·马丁),作为世界级软件开发大师.设计模式和敏捷开发先驱.C++ Report杂志前主编,也是敏捷联盟(Agile Alliance)的第一任主席,我们尊 ...

  2. 力扣119.杨辉三角II-C语言实现

    题目 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] 来源:力扣(LeetCod ...

  3. MSE,RMSE

    MSE: Mean Squared Error 均方误差是指参数估计值与参数真值之差平方的期望值; MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度. RMSE  ...

  4. 全局ID生成--雪花算法

    分布式ID常见生成策略: 分布式ID生成策略常见的有如下几种: 数据库自增ID. UUID生成. Redis的原子自增方式. 数据库水平拆分,设置初始值和相同的自增步长. 批量申请自增ID. 雪花算法 ...

  5. JDK下载安装与卸载详解

    JDK下载安装 1. 下载: 推荐版本:JDK 8 (7.8目前广泛应用) 官网地址:https://www.oracle.com/cn/java/technologies/javase/javase ...

  6. Ubuntu16.04+wineQQ+解决版本过低

    [参考1:] http://blog.csdn.net/sinat_32079337/article/details/72771078? [参考2:] http://blog.csdn.net/qq_ ...

  7. Introduction to JavaScript Source Maps

    下载jquery时候发现:jquery.min.map  这什么鬼呀? https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/core.js http ...

  8. js currying All In One

    js currying All In One 柯里化 refs https://juejin.im/post/6844903603266650125 xgqfrms 2012-2020 www.cnb ...

  9. Suspense for Data Fetching

    Suspense for Data Fetching Experimental https://reactjs.org/docs/concurrent-mode-suspense.html React ...

  10. Kyle Tedford :人,一定要懂得转弯

    每个人都渴望成功,但成功之路不仅仅只有一条. 有的时候,有一条路人满为患,每个人都挤破脑袋想要过去,然而能过去者,却寥寥无几.但有的人,却知道适时转弯,在新的道路上,摸索前进,最终通往成功. 最近,星 ...