破解“退費難”問題,深圳釋出全國首個數字人民幣教培機構預付式消費平臺
阿新 • • 發佈:2022-05-07
異常簡單分類
-
三種類型異常
- 檢查性異常
- 執行異常
- 錯誤
-
Java將異常當做類來處理,並定義了一個java.lang.Throwable作為所有異常的超類,異常類主要分為Error和Exception兩大類
捕獲和丟擲異常
-
丟擲異常
-
捕獲異常
-
異常處理五個關鍵字try、catch、finally、throw、throws
- try: 監控異常, try出現在方法體中,它自身是一個程式碼塊,表示嘗試執行程式碼塊的語句。如果在執行過程中有某條語句丟擲異常,那麼程式碼塊後面的語句將不被執行。
- catch:捕獲異常, catch出現在try程式碼塊的後面,自身也是一個程式碼塊,用於捕獲異常try程式碼塊中可能丟擲的異常。catch關鍵字後面緊接著它能捕獲的異常型別,所有異常型別的子類異常也能被捕獲。 可以多次使用,但要異常型別從小到大寫,將最大的異常型別放到後面。異常型別由大到小為Throwable->Error或 Exception_>......
- finally:處理善後,不管是否捕獲到異常均會執行,可以不使用,一般在IO中發生異常後關閉資源
- throw:主動丟擲異常, throw出現在方法體中,用於丟擲異常。當方法在執行過程中遇到異常情況時,將異常資訊封裝為異常物件,然後throw。
- throws: throws出現在方法的宣告中,表示該方法可能會丟擲的異常,允許throws後面跟著多個異常型別
-
IDEA丟擲異常快捷鍵
選中可能出現異常的程式碼->ctrl+alt+T
- try-catch-finally
public class Test { public static void main(String[] args) { int a=10; int b=0; try{//try監控區域 System.out.println(a/b); }catch(ArithmeticException e){//catch捕獲異常 System.out.println("除法分母不能為0"); }catch(Exception e){ System.out.println("除法分母不能為0"); }finally{//處理善後工作 System.out.println("finally"); } } }
- throw
package com.yang; public class Test { public static void main(String[] args) { new Test().test(1,0); } public void test(int a,int b){ if (b==0){//當出現異常時,使用throw主動丟擲異常 throw new ArithmeticException(); } } } 結果: Exception in thread "main" java.lang.ArithmeticException at com.yang.Test.test(Test.java:9) at com.yang.Test.main(Test.java:4)
- throws
package com.yang;
public class Test {
public static void main(String[] args) {
try {
new Test().test(1,0);
} catch (ArithmeticException e) {//繼續使用try-catch處理throws丟擲的異常
e.printStackTrace();
} finally {
}
}
public void test(int a,int b) throws ArithmeticException{//假設這個方法處理不了異常,使用throws方法丟擲異常
if (b==0){
throw new ArithmeticException();
}
}
}
自定義異常
- 使用者自定義異常只需要繼承Exception類即可
- 自定義異常大體分為以下幾步
- 建立自定義異常類
- 在方法中通過throw關鍵字丟擲異常物件
- 如果在當前丟擲異常的方法中處理異常,可以使用try-catch語句捕獲並處理;否則在方法的宣告處通過throws關鍵字指明要丟擲給方法呼叫者的異常,繼續進行下一步操作
- 在出現異常方法的呼叫者中捕獲並處理異常