2011-06-20 79 views
5

我很困惑Java的運行時異常的命名。 那些檢查異常,如SQLexception,也發生在程序的執行過程中。 爲什麼只有那些未被檢查的調用運行時異常? 這可能是我對「運行時」的誤解。檢查異常是否在運行時發生?

謝謝你的任何建議。

回答

5

我可以理解你的困惑。所有異常發生在運行時!

我可以用這種方式命名類的唯一原因是它澄清了這是一個例外,不必在編譯時處理。

由於相對於其他所有所謂的「檢查」的異常,RuntimeExceptions不需要程序員申報的異常使用throws條款被拋出。

2

RuntimeExceptionjava.lang.Exception的子類。 RunTimeExceptions幾乎總是編程錯誤或/和不變量的結果(空值不應被傳遞),因此您不必像java.lang.Exception(這是檢查異常)那樣捕獲它們。您不會捕獲它們,因爲運行時系統很少能夠恢復。

我認爲短語運行時只是意味着它們在程序運行時(明顯是!!),而且至關重要的是編譯器不會強制將檢查內置到代碼中,就像檢查異常一樣。我認爲這是一個難以適當命名課程的例子,例如我想他們可以在默認情況下取消選中異常並將其稱爲異常。然後對它進行子類化以提供CheckedException - 每個人都會調用java.lang.Exception一個Checked Exception,但是它不能從Class Name中清除。但他們沒有,我們有:

> java.lang.Exception is referred to as "Checked Exception" 
> java.lang.RuntimeException is referred to as "Unchecked Exception" 
相關問題