什麼是受檢異常和非受檢異常?
受檢異常(Checked Exception),表示的是在編譯的時候,要強制檢查的異常。
這種異常需要透過 try/catch 進行捕獲,或透過 throws 去拋出去,否則程式無法透過編譯。
除了 RuntimeException 及其子類以外,其他的 Exception 類及其子類都屬於受檢異常 。
非受檢異常
非受檢異常(UnChecked Exception),表示的是在編譯的時候,不需要強制檢查的異常,不會報錯。
RuntimeException 及其子類都統稱為非受檢查異常,常見的有
異常 |
說明 |
NullPointerException |
空指標錯誤 |
IllegalArgumentException |
引數錯誤 |
ArrayIndexOutOfBoundsException |
陣列越界錯誤 |
ClassCastException |
型別轉換錯誤 |
finally一定會被執行嗎?
finally 是一個關鍵字,用於定義一個程式碼塊,該程式碼塊中的程式碼無論是否發生異常都會被執行。一般用於釋放資源或者進行清理操作,以確保在程式發生異常時資源被正確地關閉。
正常情況下,無論try塊中的程式碼是否發生異常,finally塊中的程式碼都會被執行。有些特殊情況可能不被執行,如下:
在try塊中呼叫了System.exit()導致程式終止;
在try塊或catch塊中發生了無限迴圈或死迴圈,導致程式無法正常結束;
在try塊或catch塊中呼叫了Thread.stop()導致執行緒被強制終止。