点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好,可能是一个愚蠢的问题,但是我只是想知道为什么我们ABAP开发人员在执行打开数据集,读取数据集,关闭数据集。
不同地讲,您能否告诉我您认为以下代码段中未正确编码的内容(关于异常的处理)以及原因:
CLASS lcl_app定义。 公共部分。 类方法read_text_file 输入 数据集类型序列 正在返回 VALUE(行)TYPE字符串表 提高 cx_sy_file_open cx_sy_codepage_converter_init cx_sy_conversion_codepage cx_sy_file_authority cx_sy_file_io cx_sy_file_close。 ENDCLASS。 类别lcl_app实施。 方法read_text_file。 DATA:TYPE字符串。 "打开UTF-8文本文件以进行读取 OPEN DATASET数据集,用于在默认情况下以文本模式输入。 如果sy-subrc <> 0。 引发例外类型cx_sy_file_open导出文件名=数据集 errortext ='找不到文件'## NO_TEXT。 万一。 做。 "阅读下一行文字 读取DATASET数据集INTO行。 如果sy-subrc <> 0。 出口。 "文件结尾->退出循环 万一。 将行追加到行。 ENDDO。 CLOSE DATASET数据集。 终结法。 ENDCLASS。 选择开始。 尝试。 DATA(行)= lcl_app => read_text_file('/tmp/myfile')。 捕获cx_root INTO DATA(lx_root)。 ENDTRY。
非常感谢:)
否。
例外的优点是将"正常"代码与"错误处理"分开。 您避免了必须在逻辑中各处检查返回码的问题。
仅当对象对错误负责时才处理异常(例如,它具有足够的上下文信息来决定如何进行处理)。 如果不是,它将异常传递给下一个处理程序(传播异常)。 为了简化此操作,仅在RAISING子句中声明更抽象的异常类型,并在CATCH子句中使用具体的异常类型。
我会
a)检查异常层次结构,仅声明最高级别的异常CX_DYNAMIC_CHECK,也许也可以
CX_SY_FILE_ACCESS_ERROR
b)在最高级别添加异常处理,例如 打印MESSAGE lx_root TYPE'I'的错误消息。
这是有道理的。 实际上,有两所学校,因为向用户显示的简短转储确实很丑陋,因此能够自定义显示效果很好。 这就是为什么人们经常告诉我们捕获所有可能的异常,以避免出现该屏幕,而我的问题也正朝着这个方向发展。
谢谢。 我提到的所有例外都是文档中的例外。 我的意思更多的是,任何这些错误都可能发生(例如,代码页问题),我不想使程序失败,只是警告用户。
它不花很多钱,所以为什么不:)我也更喜欢有一个专用的异常类。
一周热门 更多>