给一个全局class的方法添加异常有什么用?

What is the use of adding an exception to a method of a global class?

所以,我添加了这张图片,希望它能有所帮助:

我的问题是:这样做的意义何在?我已经创建了我的全局异常 class(带有我自己的消息),我在全局 class 的方法中提出了它并且我也捕获了这个异常 - 我已经完成了所有这些但没有给出特定方法异常,那么以任何方式提供方法异常是否有帮助?

简短更新,这是我的方法代码:

一位同事告诉我给方法一个异常参数,而不是编写图 2 中的代码。如果我这样做,我看不到任何变化,这就是为什么我看不到做什么的意义在第一张图里。

这是个很好的问题。由于开销,此类异常通过创建它们、添加它们、将它们链接到一条消息来创建 - class 和 throwing/catching 它们,对我来说,有时似乎也是一种 "shooting rockets at birds".大多数东西真的可以抓CX_ROOT。 尽管如此,在某些情况下,区分异常很重要,因此创建一些自己的异常是一个很好的标准, 如果:

  • 异常的 class type/meaning 不能被 abap-standard 异常覆盖
  • 异常 class 应该链接到自己的消息-class-消息
  • 异常 class 应该提供像 "resumable" 这样的特殊功能。

最后这个问题是某种 "best practice/best usecase" 问题,我也很高兴看到一些其他答案,这些答案可以指出关于这个话题的其他观点。

参考您的原始问题:将异常添加到方法的 签名 只是说明该方法可能会抛出该异常(这对动态检查的异常有意义并且是静态检查的异常需要,以保持简单)。这对方法实现没有多大用处(除了它可以在没有错误的情况下引发异常这一事实),但它对调用者来说是一个重要的信息:调用方法 FOO 时,请注意可能会发生 ZCX_BAR -处理它或忽略它,后果自负。