異常機制
Exception
什麼是異常
異常機制可以使異常處理代碼與正常業務代碼分離開來,提高程序的容錯性和穩定性。
異常機制常用的關鍵字
try 、catch 、finally 、throw 、throws
- try:try{}塊中放入可能出現異常的代碼
- catch:catch(){}塊中捕獲可能出現的異常
- finally:finally{}塊可有可無,無論是否出現異常都會執行塊內代碼
- throw:用於拋出異常
- throws:用於在方法入口聲明可能出現的異常類型
public class LearnException {
public static void main(String[] args) {
try {
//try塊內放入可能會出現異常的代碼
learn();
//出現異常代碼之後的代碼不會執行
System.out.println("出現了異常後的代碼");
} catch (Exception e) {
//catch塊會捕獲異常並進行處理
e.printStackTrace();
} finally {
//finally塊常用來回收資源
//如數據庫鏈接、IO流和網絡鏈接等
System.out.println("運行到了finally");
}
}
//使用throws聲明異常,throw拋出異常
public static void learn() throws Exception {
//拋出一個異常
throw new Exception("方法內出現了異常了");
}
/*運行結果:
*
* java.lang.Exception: 方法內出現了異常了
at 異常.LearnException.learn(LearnException.java:22)
at 異常.LearnException.main(LearnException.java:7)
運行到了finally*/
}
異常類繼承關係
- Error:錯誤,這種錯誤無法恢復或不可能捕獲,一旦發生,程序將終止運行。
- Exception:異常,可以進行捕獲,發生時程序不會終止運行。
在捕獲異常是,一定要先捕獲範圍小的異常,再捕獲範圍大的異常。
訪問異常信息的常用方法
- String getMessage():獲取異常的詳細描述字符串。
- void printStackTrace():將異常跟蹤棧信息輸出到標準錯誤輸出。
- StackTraceElement[] getStackTrace():獲取異常的跟蹤棧信息。
自定義異常
繼承Exception類並提供構造方法
public class CreateException extends Exception {
//無參構造方法
public CreateException() {
}
//帶參構造方法
public CreateException(String msg) {
System.out.println("我是一個自定義異常");
}
}