Java異常之自定義異常


自定義異常類自定義異常

 

1、使用 Java 內置的異常類可以描述在編程時出現的大部分異常情況。

除此之外,用戶還可以自定義異常。用戶自定義異常類,只需繼承 Exception 類即可。

2、在程序中使用自定義異常類,大體可以分為以下幾個步驟:

  • 創建自定義異常類

  • 在方法中通過 throw 關鍵字拋出異常對象

  • 如果在當前拋出異常的方法中處理異常,可以使用 try-catch 語句捕獲異常並處理;

    否則在方法的聲明處通過 throws 關鍵字指明要拋出給方法調用者的異常,繼續進行下一步操作

  • 在出現異常方法的調用者中捕獲並處理異常

3、實際應用中的經驗總結:

  1. 處理運行時異常時,采用邏輯去合理規避同時輔助 try-catch 處理

  2. 在多重 catch 塊后面,可以加一個 catch(Exception) 來處理可能會被遺漏的異常

    注:catch(Exception)是最大的異常類

  3. 對於不確定的代碼,也可以加上 try-catch,處理潛在的異常

  4. 盡量去處理異常,切忌只是簡單地調用 printStackTrace() 去打印輸出

  5. 具體如何處理異常,要根據不同的業務需求和異常類型去決定

  6. 盡量添加 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);
        }
    }

}
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM