点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)您好,可能是一个愚蠢的问题,但是...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供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。
非常感谢:)
捕获CX_ROOT在几乎所有情况下都是一个非常糟糕的主意。 我个人有一种情况,我花了几天的时间寻找问题的根源,结果发现CATCH CX_ROOT子句吞没了数据库死锁错误,只是因为开发人员懒得搜索他实际上想捕获的异常(/尽头)。
否则,我同意,应该以某种方式处理文件系统接口周围的异常。 在工作中,我们在文件系统语句周围有一个(可模拟的)包装器库,该库重新引发您在/.../CX_BC_IO_ERROR中继承的所有异常(从CX_STATIC_CHECK继承),因此,如果不处理它们,则会出现语法警告。 这也有帮助,因为您不必写下所有可能的异常,因为没有通用的超类。 另外,如您所述,您只能在文档中找到它们,没有自动完成功能或类似的东西。
一周热门 更多>