java異常體系

異常是一個在程序執行期間發生的事件,它中斷正在執行的程序的正常指令流。爲了可以及時有效地處理程序中的運行錯誤,必須使用異常類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:

  • NoClassDefFoundError:類定義錯誤
  • OutOfMemoryError:內存溢出錯誤
  • StackOverflowError:堆棧溢出錯誤
  • UnknownError:未知錯誤

RuntimeException/運行時異常:

  • NullPointerException:空指針異常
  • NumberFormatException:數字格式異常
  • ClassCastException:類型轉換異常
  • IndexOutOfBoundsException:索引越界異常

非運行時異常:

  • IOException:IO異常
  • SQLException:sql異常
  • FileNotFoundException:文件找不到異常
  • ClassNotFoundException:找不到類異常
相關文章
相關標籤/搜索