自定義異常類自定義異常
1、使用 Java 內置的異常類可以描述在編程時出現的大部分異常情況。
除此之外,用戶還可以自定義異常。用戶自定義異常類,只需繼承 Exception 類即可。
2、在程序中使用自定義異常類,大體可以分為以下幾個步驟:
-
創建自定義異常類
-
在方法中通過 throw 關鍵字拋出異常對象
-
如果在當前拋出異常的方法中處理異常,可以使用 try-catch 語句捕獲異常並處理;
否則在方法的聲明處通過 throws 關鍵字指明要拋出給方法調用者的異常,繼續進行下一步操作
-
在出現異常方法的調用者中捕獲並處理異常
3、實際應用中的經驗總結:
-
處理運行時異常時,采用邏輯去合理規避同時輔助 try-catch 處理
-
在多重 catch 塊后面,可以加一個 catch(Exception) 來處理可能會被遺漏的異常
注:catch(Exception)是最大的異常類
-
對於不確定的代碼,也可以加上 try-catch,處理潛在的異常
-
盡量去處理異常,切忌只是簡單地調用 printStackTrace() 去打印輸出
-
具體如何處理異常,要根據不同的業務需求和異常類型去決定
-
盡量添加 finally 語句塊去釋放占用的資源 如:IO 流 ~ Scanner ~
package exception.demo2; /** * java 異常之自定義異常: * 1、使用 Java 內置的異常類可以描述在編程時出現的大部分異常情況。 * 除此之外,用戶還可以自定義異常。用戶自定義異常類,只需繼承 Exception 類即可。 * 2、在程序中使用自定義異常類,大體可以分為以下幾個步驟: * (1)創建自定義異常類 * (2)在方法中通過 throw 關鍵字拋出異常對象 * (3)如果在當前拋出異常的方法中處理異常,可以使用 try-catch 語句捕獲異常並處理; * 否則在方法的聲明處通過 throws 關鍵字指明要拋出給方法調用者的異常,繼續進行下一步操作 * (4)在出現異常方法的調用者中捕獲並處理異常 * 3、實際應用中的經驗總結: * (1)處理運行時異常時,采用邏輯去合理規避同時輔助 try-catch 處理 * (2)在多重 catch 塊后面,可以加一個 catch(Exception) 來處理可能會被遺漏的異常 * 注:catch(Exception)是最大的異常類 * (3)對於不確定的代碼,也可以加上 try-catch,處理潛在的異常 * (4)盡量去處理異常,切忌只是簡單地調用 printStackTrace() 去打印輸出 * (5)具體如何處理異常,要根據不同的業務需求和異常類型去決定 * (6)盡量添加 finally 語句塊去釋放占用的資源 如:IO 流 ~ Scanner ~ */ public class MyException extends Exception { /** * 傳遞一個數字 * 如果這個數字大於10 則拋出異常 */ private int detail; //構造器 public MyException(int a) { this.detail = a; } //toString:異常的打印信息 @Override public String toString() { return "捕獲自定義異常 MyException { " + "當前參數 " + detail + " > 10 " + '}'; } }
測試類測試異常
try-catch 語句捕獲異常
throw 關鍵字在方法中拋出異常
throws 關鍵字在方法上拋出異常
package exception.demo2; /** * 測試類 * 測試異常 */ public class Test { //可能會存在異常的方法 static void test(int a) throws MyException { System.out.println("傳遞的參數為:" + a); if (a > 10) { /** * 此處可以通過 try-catch 語句捕獲異常 * 也可以在方法上通過 throws 關鍵字拋出異常 * 此處選擇捕獲,外面就不用再捕獲 * 此處選擇拋出,外面需要捕獲 */ throw new MyException(a); //拋出 } System.out.println("OK"); } public static void main(String[] args) { //需要捕獲異常 try { test(11); } catch (MyException e) { //此處增加一些處理異常的代碼塊 System.out.println("MyException => " + e); } } }