一.異常的概念
異常就是沒有按照正常的預期產生結果.是一種可能性.
Java中的異常:方法在運行時發生的不正常情況。
注意:編譯出錯不是異常。(通俗點來說就是你代碼打錯了);
二.異常的結構
Throwable
│————Exception (異常);
│ ├-IOException (流異常,通常用在文件讀取中);
│ └-RuntimeException (運行時異常,表示你的代碼本身存在問題);
│
│
└————Error (錯誤)
三.異常的處理方式
//1.拋出異常 throws 對應的異常 例如:
public static void main(String[] args) throws FileNotFoundException {
System.out.println("邏輯代碼1");
showFile();
System.out.println("邏輯代碼2");
}
public static void showFile() throws FileNotFoundException {
System.out.println("邏輯代碼3");
FileInputStream fis = new FileInputStream(new File("a.txt"));
System.out.println("邏輯代碼4");
}
//2.捕獲異常 try{可能有異常的代碼}catch(異常類型){處理異常}finally{//異常處理的統一出口,不管是否有異常、是否處理了異常都會執行}
public static void main(String[] args) {
int[] arr = null;//{10,20,30};
showArr(arr);
}
public static void showArr(int[] arr){
try {
System.out.println(arr[1]);
}catch (NullPointerException ex){
System.out.println("出現了空指針異常 開始處理");
System.out.println("已經處理");
}finally {
System.out.println("處理結束");
}
System.out.println("邏輯代碼1 ");
System.out.println("邏輯代碼2 ");
System.out.println("......");
}
四.自定義異常
使用場景:系統給的異常不能滿足我們的應用的時候 可以採用自定義異常;
使用步驟:①創建一個類繼承自Exception 或者 RuntimeException
②可以提供有參構造方法和無參構造方法
③在合適的時機進行使用
注意事項:當子類重寫父類方法時,子類方法所聲明的異常類型必須包含在父類方法所聲明異常之內。實現接口也是如此;