1. 程式人生 > 實用技巧 >[Java]基礎 異常

[Java]基礎 異常

一.異常的種類
  1.異常分為兩種,一種為Checked Exception(受查的異常),一種為UnChecked Exception(不受查的異常)

  i.Checked Exception,該異常在把.java檔案編譯成.class檔案時就會出錯,這種異常繼承於Throwable Exception
    有IOException SQLException等
    如:試圖開啟一個本不存在的檔案,試圖在檔案末尾繼續讀取資料,用字串查詢一個不存在的class
  ii.UnCheaked Exception,該異常在執行.class檔案時出現的錯誤,繼承於RuntimeException,有ArrayIndexOutOfBoundsException ArithmeticException,NullPointException

    如資料型別異常(50/0),如array[array.length],如String s = null; Syso(s.length);
二.如何處理異常

  1.處理異常的關鍵字 try,catch,finally

    一般的這三個關鍵字是放在一起使用的

try{
//可能會出現異常的程式碼
}catch(Exception e){
//抓住了異常e後的操作程式碼
}finally{
//不管怎樣都會執行的程式碼,一般用來進行安全操作
}

  其中可catch多次,也就是一個try塊後可跟多個catch塊,catch塊的異常引數裡所有異常必須從最具體到最通用的順序排序,即捕獲ArithmeticException必須在捕獲Exception之前發生。

  2.處理異常的關鍵字 throw,throws

    throw是用來丟擲異常的,而throws是用來宣告異常的    

    語法用法:

 throw new IOException("輸入異常");//當執行到這個語句時,jvm就會丟擲這個你自定義的IO異常,可以丟擲受查異常和非受查異常
    void function() throws IOException{};//這個語句用來宣告這個方法可能會丟擲異常,而這個異常一般來講是CheckedException,因為非受查異常沒必要丟擲,程式設計師自己的問題,至於error更沒必要了
    //值得注意的是throws這個關鍵字宣告過後必須要做一個異常的處理程式碼塊,而且若是受查異常被處理時會隨著棧堆傳遞出來,就像非受查異常一樣

  3.小知識點
    throw和throws的最大區別是throw用來丟擲一個異常例項,而throws就是一個標籤,用來宣告這個方法或者類可能會丟擲一個或多個異常,throws後面跟的是一個類名

    try是可以巢狀的,其目的是因為在一個大的可能會出異常的方法塊內會出現一些小的程式碼塊可能會丟擲其他異常

三.異常處理方法的重寫

  1.父類方法沒宣告異常,子類方法只能宣告非受查異常或者不宣告

  2.父類方法聲明瞭異常,子類方法可以宣告相同的異常或者不宣告或者宣告父類方法宣告異常的子類異常