2011-05-30 59 views
2

我最近在一次Interview中問了一個關於擴展java.lang.RuntimeException的問題。我爲什麼要擴展java.lang.RuntimeException

我被要求引用一個例子,其中將需要擴展java.lang.RuntimeException。

我一直認爲我們不需要延長RuntimeException,任何人都可以啓發我嗎?

感謝, SB

+0

我不想查找RuntimeException的定義或可能的原因。任何人都可以給出一個擴展RuntimeException的例子和理由。此外,我相信這不是讓我迷惑。 – 2011-05-30 09:57:03

+0

可能重複的[何時選擇checked和unchecked exceptions](http://stackoverflow.com/questions/27578/when-to-choose-checked-and-unchecked-exceptions) – LisaMM 2015-07-09 12:08:20

回答

4

一層的運行時異常是另一個層的檢查(並採取行動)異常。

我可以看到容器例如servlet容器; REPL和/或任何頂級解釋器循環;等等合法地選擇和捕獲RuntimeExceptions,因爲它們不應該僅僅因爲某些事情在堆棧中進一步發展而崩潰。

與容器殼體相似,穿過鄰接邊界例如交叉層或層通常需要更明確的異常語義。

如果「原因」和/或消息屬性在語義上證明不足以表達超出「嗨,它壞了」的任何內容,並且客戶端/更高層可以有選擇地行動,那麼對於子類RuntimeException來說可以說是合理的。

0

的RuntimeException是 那些可以在 Java虛擬機的正常運行期間拋出的異常 超類。

的方法不需要申報 其throws子句中 RuntimeException的可能方法的執行過程中被拋出 但 沒有抓到的任何子類。

RuntimeException

0

RuntimeException是那些可能在Java虛擬機的正常運行期間拋出的異常的超類。

如果您向jdk添加新功能,或者您修改了jvm實現,則應該擴展RuntimeException以添加新的RuntimeException。

3

您希望在創建不必顯式捕獲的異常(未檢查異常)時擴展RuntimeException。這是異常情況,表示通常無法恢復的問題(例如死數據庫)。

您應該在take a look處查看Java中已檢查和未檢查的異常之間的差異。

0

您應該留意這些不應該擴展的異常,因爲它通常應該用在不能執行更多操作並且應該中斷操作的地方。

但是如果你需要爲這種情況找到一個應用程序,你可以說通過創建不同類型的RuntimeException,我們可以有更多的控制在異常處理程序中顯示異常等消息,但恕我直言,這只是玩遊戲。

0

當客戶無法合理地從程序恢復,我會拋出運行時異常, 這些都是典型的unchecked異常,在代碼中大多的錯誤,該客戶端不能指望在運行時

例子來恢復:死鏈接數據源,JNDI綁定失敗,某些操作的前置條件失敗(分母爲零的分區)是此RuntimeException子類的場景

相關問題