2017-07-14 53 views
0

如果用戶定義的異常擴展類異常併成爲檢查的異常,那麼RunTimeException也會發生異常,這是不同的。我嘗試過搜索多個論壇,但仍然無法理解對待RTE的因素與普通用戶定義的異常不同 - 因爲兩者都擴展了Exception類。UserDefinedException&RunTimeException區別

+1

由於'RuntimeException'是語言的一部分,它肯定可以以不同的方式處理,就像'Serializable'不僅僅是一個普通的接口,而且還以特殊的方式處理。 – Thomas

+0

因此JVM對待RTE的方式不同嗎? –

回答

0

甲用戶定義的異常可以是:

  • 如果它直接或間接地延伸Exception,或
  • 未經檢查的類型,如果它直接或間接地延伸RuntimeException一個檢查類型。

(理論上你可以擴展ThrowableErrorError一個子類,但這是不必要的,不好的做法,並可能是危險的。)

的JVM沒有把檢查,未經檢查的類型不同。不同的處理由Java編譯器完成,這就是爲什麼如果未正確處理檢查異常,您會得到編譯錯誤。這些規則是由Java規範(JLS)而不是運行時系統規定的。


...怎麼來RunTimeException這也延伸Exception有什麼不同?

因爲JLS說的是。檢查和未檢查異常的規則是Java語言的一部分,就像語法,範圍規則,類型規則等一樣。

+0

,這有助於... JLS是我錯過的地方。非常感謝你解釋這一點。非常感謝您的幫助。 –