2012-02-16 67 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框架將處理它。

請注意,您從不需要自己調用這些方法。

相關問題