2014-01-08 32 views
0

我將在我的應用程序中實現異常處理。我應該怎麼照顧。請指出。java應用程序中的異常處理

我的策略: 我正在創建我的用戶定義的Exception類。它是否應該擴展RuntimeException或Exception?

然後我想從每個catch塊中拋出異常,然後在我的類中決定什麼是該異常類型的實例。在此基礎上,我將宣佈其嚴肅性的類型,如致命的批評。

public class MyException extends RuntimeException{ 

} 

public class MyException extends Exception{ 

} 
+3

*然後我想從每個catch塊*拋出我的異常:你爲什麼要這樣做?看起來像一個非常糟糕的主意。 –

+0

@JBNizet我已經回答,但正在刪除,因爲我也想知道這一點。 –

+0

我能想到的唯一正當理由是將第三方異常依賴關係解耦。例如,您正在編寫應用程序A,依賴於適配器B,依賴於第三方框架C,D和E. 應用程序A應與框架C,D和E分離,以便它們可以互換使用。例如,一個方法「getResource()」可以拋出一個(檢查過的)ResourceNotFoundException,在B中,它是從C中的SQLException,D中的FileNotFoundException和E中的webservice中的404返回碼轉換而來的。 –

回答

2

請閱讀有關checked and unchecked Exceptions:之間的這些都

差異。

例外延伸RuntimeException不需要catch塊。例外延伸Exception需要一個catch塊,所以我想你想擴展Exception並使用檢查的異常。

+0

+1 –

1

這兩個陳述之間有區別。

當你這樣做MyException extends RuntimeException,那麼它的選中異常,所以你不必申報你的方法throw例外

其他聲明是檢查異常,您必須聲明使用它的方法,以throw的例外。

然後我想從每個catch塊

把我的例外是有一個理由去這樣做呢?這兩種情況都沒有意義。

0

我認爲你需要做的第一個區別是如果你想讓它像Java中的checked和unchecked異常一樣。如果你看看ArrayIndexOutOfBounds異常是怎樣的,以及如何說SQL異常。 運行時異常通常是由於異常情況而發生的錯誤或缺陷。

在你的情況,我認爲你不需要它是一個運行時異常,因爲你要在你的代碼中處理它。