是否有任何标准注释来指示Java中的nothrow语义?

Mic*_*yan 6 java annotations exception

我想将Java中的接口方法记录为不允许传播异常,并进行某种形式的静态分析,以验证此方法的实现捕获并处理可能传播给它的任何异常。遵循某种思路@NoThrow

例如,我希望能够写:

interface SomeServiceProviderInterface {
   @NoThrow
   @NonNull
   SomeResult someComputation();
}
Run Code Online (Sandbox Code Playgroud)

...并保证实现遵守该接口协定。是否已经有注释和静态分析工具?如果不是,有谁知道这是否可以通过注释处理器来实现(它可以查看代码是否包含try ... catch块吗?)和/或对实现此类操作有任何建议或建议?谢谢!

Rae*_*ald 5

不可能有这样的注解,因为不可能保证一个方法不抛出异常。这是因为任何方法都可能VirtualMachineError在任何时候抛出 a。特别是,OutOfMemoryError 即使方法本身没有直接或间接分配内存(使用new运算符),它也可能抛出。这不仅仅是理论上的问题:如果垃圾收集线程花费太长时间,一些并发垃圾收集器会这样做。