天天看點

異常處理

 當一個程式出現錯誤時,它可能的情況有3種:文法錯誤,運作時錯誤和邏輯錯誤。文法錯誤是指代碼的格式錯了,或者某個字母輸錯了;運作時錯誤是指在程式運作的時候出現的一些麼有想到的錯誤,如:空指針異常,數組越界,除數為零等;邏輯錯誤是指運作結果與預想的結果不一樣,這是一種很難調試的錯誤。而java中的異常處理機制主要是指處理運作時錯誤,即異常就是運作時錯誤。

一、異常的分類

  在java中,任何異常都屬于java.lang.throwable類或其子類,throwable類又分為exception類和error類。其中exception類用于使用者所出現的各種異常,它也可用來建立自定義類型的類。error類異常是指java程式運作時與運作是系統本身有關的錯誤,這些異常通常是災難性的,不是程式可以控制的。

  exception類的異常又分為運作時異常和非運作時異常。其中運作時異常是指runtimeexception類及其子類,這些異常不檢查異常,可以選擇捕獲處理,也不可以不處理。非運作時錯誤是除runtimeexception類以外的異常,這些異常必須處理,否則會導緻程式編譯不能通過。

1.try...catch語句格式

  catch語句的參數包括一個異常類型和一個異常對象,異常對象必須為throwable的子類,指明了catch語句可以處理的異常類型。catch語句可以有多個,分别處理不同類型的異常。一個catch語句也可以捕捉多個異常類型,此時,catch的異常類型參數應該是這些異常類型的父類。

2.多個catch語句

當某個程式塊可能出現錯個異常時,可以用多個catch語句,每個catch語句捕獲一種異常,當抛出異常時,每個catch一次檢查。當第一個catch語句執行時,其它的catch語句暫不執行,而當該catch執行結束後就會一次執行下一個catch語句。

要注意的是:當使用多個catch語句時,catch語句塊要有先後之分。如果父類異常在子類異常前面的話,首先執行的是父類異常,子類異常将永遠不會執行,這樣在程式運作的時候就會出現錯誤。