我最近在一次Interview中問了一個關於擴展java.lang.RuntimeException的問題。我爲什麼要擴展java.lang.RuntimeException
我被要求引用一個例子,其中將需要擴展java.lang.RuntimeException。
我一直認爲我們不需要延長RuntimeException,任何人都可以啓發我嗎?
感謝, SB
我最近在一次Interview中問了一個關於擴展java.lang.RuntimeException的問題。我爲什麼要擴展java.lang.RuntimeException
我被要求引用一個例子,其中將需要擴展java.lang.RuntimeException。
我一直認爲我們不需要延長RuntimeException,任何人都可以啓發我嗎?
感謝, SB
一層的運行時異常是另一個層的檢查(並採取行動)異常。
我可以看到容器例如servlet容器; REPL和/或任何頂級解釋器循環;等等合法地選擇和捕獲RuntimeExceptions,因爲它們不應該僅僅因爲某些事情在堆棧中進一步發展而崩潰。
與容器殼體相似,穿過鄰接邊界例如交叉層或層通常需要更明確的異常語義。
如果「原因」和/或消息屬性在語義上證明不足以表達超出「嗨,它壞了」的任何內容,並且客戶端/更高層可以有選擇地行動,那麼對於子類RuntimeException來說可以說是合理的。
的RuntimeException是 那些可以在 Java虛擬機的正常運行期間拋出的異常 超類。
的方法不需要申報 其throws子句中 RuntimeException的可能方法的執行過程中被拋出 但 沒有抓到的任何子類。
RuntimeException是那些可能在Java虛擬機的正常運行期間拋出的異常的超類。
如果您向jdk添加新功能,或者您修改了jvm實現,則應該擴展RuntimeException以添加新的RuntimeException。
您希望在創建不必顯式捕獲的異常(未檢查異常)時擴展RuntimeException。這是異常情況,表示通常無法恢復的問題(例如死數據庫)。
您應該在take a look處查看Java中已檢查和未檢查的異常之間的差異。
您應該留意這些不應該擴展的異常,因爲它通常應該用在不能執行更多操作並且應該中斷操作的地方。
但是如果你需要爲這種情況找到一個應用程序,你可以說通過創建不同類型的RuntimeException,我們可以有更多的控制在異常處理程序中顯示異常等消息,但恕我直言,這只是玩遊戲。
當客戶無法合理地從程序恢復,我會拋出運行時異常, 這些都是典型的unchecked異常,在代碼中大多的錯誤,該客戶端不能指望在運行時
例子來恢復:死鏈接數據源,JNDI綁定失敗,某些操作的前置條件失敗(分母爲零的分區)是此RuntimeException子類的場景
我不想查找RuntimeException的定義或可能的原因。任何人都可以給出一個擴展RuntimeException的例子和理由。此外,我相信這不是讓我迷惑。 – 2011-05-30 09:57:03
可能重複的[何時選擇checked和unchecked exceptions](http://stackoverflow.com/questions/27578/when-to-choose-checked-and-unchecked-exceptions) – LisaMM 2015-07-09 12:08:20