1. 程式人生 > >java API(2)-異常處理

java API(2)-異常處理

java異常處理


什麼是異常
異常是執行時發生的錯誤,程式碼中的語法錯誤不是異常,而是編譯錯誤。

異常的層次結構
Object
   Throwable
       Error(jvm層的)
       Exception
           受檢查異常
           執行時異常

java中處理異常的機制
捕獲->丟擲
處理異常的語法

try{
		//語句塊,可能產生異常的語句
}catch(異常型別 e){
		//處理異常
}

關於try和catch使用的注意事項

  • 每個try塊可以對應多個 catch,如果catch中能捕獲異常,則進行捕獲,如果捕獲不到,則繼續向外丟擲
  • 每個try塊中可以包含多行程式碼,一旦出現異常,try塊中餘下的程式碼不會執行
  • 如果有多個catch塊,那麼父類的異常應該放在下方, 否則會編譯出錯。

關於finally

  • 一個try塊中可以最多包含一個finally(可以沒有),並且放在try結構的最後
  • 只要進行try塊,finally中的程式碼一定會被呼叫(退出jvm除外),因此我們可將一定執行的程式碼(例如釋放資源)放在finally中
  • 一個try塊中至少應該對應catch或finally中的一個

異常物件可由jvm和使用者編碼來建立並丟擲:(throw 異常物件)
語法:
throw 異常物件
例:throw new ArrayIndexOutOfBoundsException(“陣列下標越界”)

throws關鍵字
throws 放在方法宣告之後,throws後面加入一個異常類;說明此方法會丟擲一個某型別的異常

異常(Exception)的分類

  • 執行時異常:可以不處理
    • RuntimeException及其子類
  • 受檢查異常:必須處理,否則不能通過編譯
    • Exception及其子類

處理異常的兩種方式

  • 自行處理:通過try -catch自行解決
  • 迴避處理:將異常拋給呼叫者處理,優點是呼叫者可以自己決定如何處理異常(把處理權交給呼叫者)。

自定義異常
定義一個類,繼承Exception或RuntimeException即可