2014-12-05 21 views
1

我的應用程序使用一個配置文件,其中有很多可配置的項目。爲不良配置拋出未經檢查的異常是一個好主意嗎?

例如,您可以指定具有用於WebService連接(而不是默認JVM javax.net.ssl.keystore)的自定義別名的自定義密鑰庫。

在運行時,我們可能會發現這個別名不存在於密鑰庫中,所以我們可能想引發異常。因爲這是應用程序的關鍵部分(並且我們不能期望應用程序能夠正常工作,直到配置被修復),我想在這裏拋出一個Unchecked Exception是一個好主意。

我是這麼想的嗎?

創建一個自定義ConfigurationException(它延伸RuntimeException)投擲在這種情況下是否有意義?

回答

2

檢查異常拋出以通知用戶您的方法該方法可以拋出特定的異常。這樣用戶可以決定在發生異常時應該怎麼做。

如果你的要求是「應用程序不應該繼續,除非配置是正確的」,並且沒有方法用戶可以運行來繞過它(在try-catch塊中),那麼我沒有看到任何理由使它成爲一個檢查異常(如果我們知道它沒用,爲什麼要讓用戶做不必要的工作)。

所以,在這種情況下,我也會去做未經檢查的異常。

+0

感謝您的回覆。你會使用默認的'RuntimeException'還是創建一個擴展的自定義異常,專門指向配置? – Davio 2014-12-05 09:14:20

+1

我會去定製......(我不是那個回答的人,但我支持這個答案) – Hichamov 2014-12-05 09:18:14

+0

我會去定製,因爲它會提供更好的控制。 – Ouney 2014-12-05 09:21:39

0

我認爲你應該創建一個檢查的異常,並且當你捕獲它時,在顯示一條消息之後在catch塊中結束程序。未經檢查的異常適用於編程錯誤,應由開發人員糾正。檢查異常適用於可能發生的情況,但我們無法控制它。您知道配置文件可能已損壞,但您無法阻止它發生並且無法控制它。我會去檢查異常。

0

未經檢查的異常表明程序中存在錯誤或系統錯誤。例如,ArrayIndexOutOfBoundsExceptionNullPointerException不應出現在程序中,如果它們出現,通常會指示一個錯誤。

驗證用戶輸入時,通過配置文件直接輸入用戶或用戶輸入,異常並不表示錯誤。因此,它應該是一個檢查的異常,以提醒程序員調用您的方法,發現異常不可能發生並且必須被捕獲。通過捕獲異常,您可以生成一個指向解決方案的用戶友好的錯誤消息。 (您不希望最終用戶看到Java生成的Exception in thread ...消息!)

相關問題