2011-12-06 72 views
2

聲明(Unchecked Exception)沿着方法簽名b/c拋出異常的好處是什麼?它不強制調用者保留在try catch塊中。Java拋出RuntimeException的好處

public void testRuntimeEx()throws RuntimeException{ 

if(1==1){throw new RuntimeException()} 

} 

//Caller method 
public void testCaller(){ 
// not necessery to handle even caller does not known which RuntimeException might be throws then what is the benefit throws clause with method signature 
testRuntimeEx(); 

} 
+0

您不必聲明它,因爲它沒有被選中。 – edwardw

回答

0

如果拋出自定義的未經檢查的異常,它變得更有意義,而捕捉系統異常和未經檢查的異常不會強制捕捉太多。

3

它仍然作爲文件,特別是如果你不使用一個通用的RuntimeException,但更具體的東西像拋出:IllegalArgumentException或UnsupportedOperationExceptionIndexOutOfBoundsException,也可以添加一些的JavaDoc何時會發生。

儘管如此,在您的示例代碼片段中,這是非常沒有意義的。

2

此聲明是使用此代碼的開發人員的信號,它會引發RuntimeException。 但它聞起來不好。

P.S.您發佈的代碼無法編譯:

throw RuntimeException 

這是不正確的投擲。

1

好處是通常調用者與異常沒有任何關係。它捕捉到它,用其他異常包裝並再次拋出。或者,也可以使用throws關鍵字聲明異常,並在異常情況下對此類型變爲透明。

我想說,描述的情況是典型的應用程序,我們通常寫業務代碼,並有一個集中處理所有異常的地方。 API不正確。例如,如果您正在使用實現SSH的庫,則當出現問題時,您期望它會拋出IOException(或甚至更特殊的異常)。

相關問題