天天看點

Java基礎--異常處理

Java中的錯誤會以對象方式呈現為

java.lang.Throwable

的個種子類示例。通過捕獲包裝錯誤的對象,可以針對錯誤做一些對應的處理。本文主要記錄其中比較容易記錯的點。

1、異常繼承架構

Java基礎--異常處理
  1. 錯誤對象都繼承自

    java.lang.Throwable

    類,它有兩個子類:

    java.lang.Error

    java.lang.Exception

  2. Error與其子類執行個體代表嚴重系統錯誤。
  3. Exception或其子類執行個體代表程式設計本身的錯誤,是以錯誤處理稱為異常處理(Exception Handling)。
  4. 受檢異常(Checked Exception)

    Exception或其子對象,但非屬于RuntimeException或其子對象,編譯器會進行檢查。
  5. 非受檢異常(Unchecked Exception)

    屬于RuntimeException衍生出來的類示例,例如空指針。

2、異常與資源管理

  1. try

    後面可以不跟

    catch

    ,也可以不用撰寫

    finally

    語句,例如JDK7中

    Try-with-resources

    文法

    public static String readFile(String name) throws FileNotFoundException { StringBuilder text = new StringBuilder(); try(Scanner console = new Scanner(new FileInputStream(name))){ while (console.hasNext()){ text.append(console.nextLine()) .append('\n'); } } return text.toString(); }

  2. finally執行順序:

    如果先return 了,而且也有finally塊,那麼finally區塊會先執行完再将值傳回。
  3. java.lang.AutoCloseable

    實作該接口可以嘗試關閉資源,但也僅僅是幫助關閉資源,如果有需要處理的異常還是需要catch處理;嘗試關閉資源文法中可以同時關閉兩個以上的對象資源,中間以分号隔開,且try括号中,越後面撰寫的對象資源會越早被關閉。

3、定義自己的異常類

可以繼承Exception或者RuntimeException

public class MyException extends Exception {
    private final static long serialVersionUID = 1L;

    // 提供無參數的構造方法
    public MyException() {
    }

    // 提供一個有參數的構造方法,可自動生成
    public MyException(String message) {
        // 把參數傳遞給Throwable的帶String參數的構造方法
        super(message);
    }
}           

複制