Java中的錯誤會以對象方式呈現為
java.lang.Throwable
的個種子類示例。通過捕獲包裝錯誤的對象,可以針對錯誤做一些對應的處理。本文主要記錄其中比較容易記錯的點。
1、異常繼承架構

- 錯誤對象都繼承自
類,它有兩個子類:java.lang.Throwable
和java.lang.Error
。java.lang.Exception
- Error與其子類執行個體代表嚴重系統錯誤。
- Exception或其子類執行個體代表程式設計本身的錯誤,是以錯誤處理稱為異常處理(Exception Handling)。
-
Exception或其子對象,但非屬于RuntimeException或其子對象,編譯器會進行檢查。受檢異常(Checked Exception)
-
屬于RuntimeException衍生出來的類示例,例如空指針。非受檢異常(Unchecked Exception)
2、異常與資源管理
-
後面可以不跟try
,也可以不用撰寫catch
語句,例如JDK7中finally
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(); }
-
如果先return 了,而且也有finally塊,那麼finally區塊會先執行完再将值傳回。finally執行順序:
-
實作該接口可以嘗試關閉資源,但也僅僅是幫助關閉資源,如果有需要處理的異常還是需要catch處理;嘗試關閉資源文法中可以同時關閉兩個以上的對象資源,中間以分号隔開,且try括号中,越後面撰寫的對象資源會越早被關閉。java.lang.AutoCloseable
3、定義自己的異常類
可以繼承Exception或者RuntimeException
public class MyException extends Exception {
private final static long serialVersionUID = 1L;
// 提供無參數的構造方法
public MyException() {
}
// 提供一個有參數的構造方法,可自動生成
public MyException(String message) {
// 把參數傳遞給Throwable的帶String參數的構造方法
super(message);
}
}
複制