2011-02-11 32 views
3

這更多的是面向對象設計問題。應該延長RuntimeException嗎?

所以,我有一個UnsuportedLocaleException將只用於應用程序的初始化階段。我有兩種選擇:

  1. 擴展RuntimeException並將其保留在那裏,沒有任何處理邏輯(如果配置爲=> apply defaults if wrong)。
  2. 擴展異常並處理它(涉及所有冗餘編碼等)。

我更喜歡第一個,但不知道這是否是正確的設計。

+0

duplicateated http://stackoverflow.com/questions/4233793/proper-use-of-runtimeexception – 2011-02-11 17:12:28

+1

你應該首先確定是否要強制調用者處理異常。如果調用者無法做任何有用的事情並且死亡,請擴展RuntimeException或可能的錯誤。 – 2011-02-11 17:18:22

回答

8

似乎對我完全合理。 RuntimeException是一個很好的例外基類,調用代碼不應該嘗試「處理」 - 即當它們指示可能意味着整個應用程序或(可能對於服務器)請求應該簡單地棄。

2

這裏有幾點意見。

首先(經典)說,在大多數情況下,你應該使用檢查的異常。在這種情況下,方法必須將這個異常聲明爲其簽名的一部分或者將其捕獲。這種方法的優點是界面一直很清晰,每個層都關心其例外情況。但是這個方法非常冗長。有時你的代碼變得更長,你必須糾正幾個try/catch語句,而不是調用一些方法,並寫一個if

其他方法是僅使用運行時異常。這種理念說,你不必處理異常,因爲你與他們無關。在這種情況下,所有異常都是運行時並在一箇中央模塊中捕獲和處理。例如Spring框架使用這種方法。

所以答案是你在開發什麼。如果這是獨立的庫,使用檢查定義良好的異常。如果是應用程序或應用程序框架,則可以使用Spring等運行時異常。