2012-02-16 121 views

回答

2

请注意,您可以声明您的startstop方法,但不包含任何throws子句。 (或者你可以声明这些方法与任何java.lang.Exception子类)。

在另一方面,具体的,例如

void start(BundleContext context) throws BundleActivatorException 

方法不会改变太多。它只是让执行者捕捉到他们的异常,并将其重新包装在BundleActivatorException中。由于每个例外都会导致束激活毫无意义,因此try-catch块实际上是不必要的,因此投掷java.lang.Exception更容易。

1

start()stop()方法中抛出异常表明某件事情严重错误,并且捆绑包生命周期更改不应通过。由于我们将检测情况(通过捆绑)和处理(通过框架)分开,所以抛出Exception是唯一合理的事情。

1

我认为Josh Bloch的建议不合时宜。 throws Exception没有错。它给你选择抛出你喜欢的任何异常,并且OSGi框架将处理它。

请注意,您从不需要自己调用这些方法。

相关问题