異常是一個在程序執行期間發生的事件,它中斷正在執行的程序的正常指令流。爲了可以及時有效地處理程序中的運行錯誤,必須使用異常類java
異常類若是使用正確,能夠提升程序的可讀性,可靠性和可維護性,若是使用不當會帶來負面效果sql
java異常體系安全
Java 異常強制用戶考慮程序的強健性和安全性。異常處理不該用來控制程序的正常流程,其主要做用是捕獲程序在運行時發生的異常並進行相應處理測試
java中全部的異常類型都是 java.lang.Throwable的子類,分爲兩種類型Error錯誤和Exception異常spa
Error線程
程序中沒法處理的錯誤,表示運行應用程序中出現了嚴重的錯誤,出現此類異常,JVM將終止線程指針
好比:code
Exceptionorm
運行時異常:cdn
此類異常實現都是RuntimeException類及其子類
運行時異常沒必要在代碼中強制進行try-catch
這類異常一般由程序邏輯錯誤引發,應儘可能避免此類異常的發生
非運行時異常
除了運行時異常外,繼承了Exception的異常類
非運行時異常必需要在程序中進行try-catch,若是不處理,則程序編譯不經過
自定義異常
自定義異常須要繼承Exception類
public class WarnException extends Exception {
public WarnException(String message) {
super(message);
}
}
複製代碼
測試:
public static void test() throws WarnException{
try {
int i= 1/0;
}catch (Exception e){
throw new WarnException("自定義異常");
}
}
複製代碼
異常信息:
異常處理流程
捕獲異常:
try {
} catch (Exception e) {
e.printStackTrace();
} finally {
}
複製代碼
執行流程:
正常try-catch中無異常時:執行順序是try - finally
正常try-catch中有異常時:執行順序是try - catch - finally
捕獲多重異常:
try{
}catch(WarnException we){
}catch(Exception e){
}finally{
}
複製代碼
try代碼塊後跟多個catch代碼塊,這種狀況就叫多重捕獲
拋出異常:
public static void test() throws WarnException{
try {
int i= 1/0;
}catch (Exception e){
throw new WarnException("自定義異常");
}
}
複製代碼
在方法上拋出異常使用throws關鍵字,若是一個方法沒有捕獲一個檢查性異常,那麼該方法必須使用 throws 關鍵字來拋出這個異常
在方法內拋出異常使用throw關鍵字
常見異常
Error:
RuntimeException/運行時異常:
非運行時異常: