java異常型別分為哪幾種
異常處理的目的是依據實際情況提供不同的錯誤應對策略與手段,使程式更穩定,更安全。
異常處理的主要用途是提供準確的錯誤訊息,解釋失敗的原因、位置和錯誤型別等,同時提供一定的恢復能力,儘可能地保證資料完整性不被破壞,並讓程式能繼續執行。
Java中的異常捕獲語句
Java 中所有可捕獲的異常都派生自 Exception 類。
使用Java異常處理機制
*把可能會發生錯誤的程式碼放進try語句塊中。
*當程式檢測到出現了一個錯誤時會丟擲一個異常物件。異常處理程式碼會捕獲並處理這個錯誤。catch語句塊中的程式碼用於處理錯誤。
*當異常發生時,程式控制流程由try語句塊跳轉到catch語句塊。
*不管是否有異常發生,finally語句塊中的語句始終保證被執行。
*如果沒有提供合適的異常處理程式碼,JVM將會結束掉整個應用程式。
JDK中與異常相關的類
Java中的異常分類
Throwable類有兩個直接子類:
Exception:出現的問題是可以被捕獲的;
Error:系統錯誤,通常由JVM處理。
可捕獲的異常又可以分為兩類:
(1)check異常:直接派生自Exception的異常類,必須被捕獲或再次宣告丟擲
(2)runtime異常:派生自RuntimeException的異常類。使用throw語句可以隨時丟擲這種異常物件:
throw new ArithmeticException(…);
異常的“多型”特性
*可以有多個catch語句塊,每個程式碼塊捕獲一種異常。在某個try塊後有兩個不同的catch塊捕獲兩個相同型別的異常是語法錯誤。
*使用catch語句,只能捕獲Exception類及其子類的物件。因此,一個捕獲Exception物件的catch語句塊可以捕獲所有“可捕獲”的異常。
*將catch(Exception e)放在別的catch塊前面會使這些catch塊都不執行,因此Java不會編譯這個程式。
“finally”的功用
*資源洩露:當一個資源不再被某應用程式使用,但此程式並未向系統宣告不再使用此資源時發生這種情況
*finally語句塊主要用於解決資源洩露問題,它位於catch語句塊之後,JVM保證它們一定執行。
*注意:finally語句塊中也可能發生異常,如果這種情況發生,先前的異常被放棄。