假设我有这个由多个供应商实现的接口A:
interface A
{
void x();
void y();
}
但是,我希望供应商能够抛出异常来发出信号失败的信号,并且该方法可能会抛出RuntimeException.在每种情况下,调用这些方法的代码都应该处理失败并继续.仅仅因为1个供应商抛出NPE,我不希望系统崩溃.我想通过将每个方法声明为:来确保每个调用都能捕获所有异常,而不是将其留给调用方法的人(或者真正的维护方式).
void x() throws Exception;
但这通常是不好的做法(PMD不喜欢它,一般我同意具体方法的规则),所以我想这是规则的例外还是有更好的方法?
让我说清楚,我正在寻找一种解决方案,其中接口的调用者被迫处理所有异常(包括RuntimeExceptions).
为了进一步详细说明我的环境,所有这些都在OSGi框架内运行.因此,每个供应商将其代码打包在一个捆绑包中,OSGi将处理所有异常以防止整个系统崩溃.我真正关注的是OSGi服务接口,它将被某些核心捆绑包调用.我想要确定的是,当我遍历所有服务时,一个服务不会抛出NPE并停止正在执行的进程.我希望通过捕获从服务抛出的所有异常来更优雅地处理它,以便仍然管理其他提供的服务.