为什么不允许声明从CX_NO_CHECK继承的异常?

2020-09-23 18:44发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我觉得让 授权检查失败的异常继承自CX_NO_CHECK。 这样,就可以在无需在每种方法中都声明的情况下对它们进行高级处理。

但是,这并不意味着我不想通知调用者特定的方法可能引发该异常。 但是,当我尝试添加RAISING子句时,收到一条错误消息,显然警告是不够的,该异常不会继承自CX_STATIC_CHECK或CX_DYNAMIC_CHECK。

在这方面,似乎有人认为最好的应该是善的敌人:如果您不接受被迫声明或处理它,我们甚至都不会允许您将其声明为对呼叫者有用的提示 可以引发异常。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我觉得让 授权检查失败的异常继承自CX_NO_CHECK。 这样,就可以在无需在每种方法中都声明的情况下对它们进行高级处理。

但是,这并不意味着我不想通知调用者特定的方法可能引发该异常。 但是,当我尝试添加RAISING子句时,收到一条错误消息,显然警告是不够的,该异常不会继承自CX_STATIC_CHECK或CX_DYNAMIC_CHECK。

在这方面,似乎有人认为最好的应该是善的敌人:如果您不接受被迫声明或处理它,我们甚至都不会允许您将其声明为对呼叫者有用的提示 可以引发异常。

付费偷看设置
发送
2条回答
Tong__Ming
1楼 · 2020-09-23 19:25.采纳回答

请仔细阅读文档和指南。

https: //help.sap.com/http.svc/rc/abapdocu_752_index_htm/7.52/zh-CN/index.htm?file=abenexception_category_guidl.htm

cx_no_check的子类不需要RAISING子句,因为它们是隐式传播的。 那是这些的主要目的。 仅出于文档目的,请使用方法文档或ABAP Doc。 否则,请使用建议的异常类别。

小灯塔
2楼-- · 2020-09-23 19:31

在这个世界上有很多东西是不需要的-我们不一定只是因为不需要它们而使它们非法;-)

我认为C ++在这里具有正确的概念,除非所有异常都得到处理,否则所有异常都会传播。 除非他们愿意,否则中间方法不需要知道或关心它们,只有投掷者和捕手才需要关心。

我看到了文档的重点和方法签名的"契约",但是检查的异常需要额外的工作,而允许声明未检查的异常将如Mike指出的那样,让开发人员查看可能发生的异常,然后 决定是使用当前方法还是使用调用链中的更高级别处理它们。

但是,我也意识到实现我的建议将需要ABAP开发人员的额外工作,这些开发人员已经在忙于实现重要的新功能,例如SELECT的OFFSET添加(竖起大拇指)。 因此,这对您或我们其他人来说都是更多的工作。 我为您投票:-)

一周热门 更多>