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