OSGI 的start
和stop
方法BundleActivator用 throws Exception
声明。同时,Joshua Bloch 在他的书 Effective Java,第二版,第 62 项中说
never declare a method "throws Exception"
那么在 BundleActivator
中这是一个糟糕的设计决策,还是这种普遍性在这种情况下是合理的,为什么?
最佳答案
请注意,您可以在不使用任何throws
子句的情况下声明start
和stop
方法。 (或者您可以使用任何 java.lang.Exception
子类声明这些方法。)
另一方面,一个具体的例子,例如
void start(BundleContext context) throws BundleActivatorException
方法不会改变太多。它只会让实现者捕获他们的异常并将其包裹在 BundleActivatorException
中重新抛出。由于每个异常都会使包激活变得毫无意义,因此这个 try-catch
block 实际上是不必要的,因此抛出 java.lang.Exception
更容易。
关于java - 为什么用 "throws Exception"声明 OSGI BundleActivator 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9311890/