Java 雖然內置了很多異常類型,但是也不能滿足所有的場景,在實際項目開發中有時也需要定義自己的異常類,然后拋出該異常類的對象
自定義異常類需要繼承自 Exception 類或者 Exception 子類,如果自定義運行時異常類則需要繼承自 RuntimeException 類或者 RuntimeException 子類。
Java 自定義異常類的語法格式:
myExceptioName 就是自定義異常類的名字。在編碼規范上,一般將自定義異常類命名為 XXXException,其中 XXX 用來代表該異常的作用。
自定義異常類一般包含兩個構造方法:
一個是無參的默認構造方法;
另一個構造方法以字符串的形式接收一個定制的異常消息,并將該消息傳遞給超類的構造方法。
例如,以下代碼創建一個名稱為 IntegerRangeException 的自定義異常類:
以上代碼創建的自定義異常類 IntegerRangeException 類繼承自 Exception 類,在該類中包含兩個構造方法。
編寫一個程序,對會員注冊時的年齡進行驗證,即檢測是否在 0~100 歲。
1) 創建一個異常類 MyException,并提供兩個構造方法。實現代碼如下:
2) 創建測試類 Test07,調用自定義異常類。代碼實現如下:
3) 運行該程序,當用戶輸入的年齡為負數時,則拋出 MyException 自定義異常,執行第二個 catch 語句塊中的代碼,打印出異常信息。
程序可能的運行結果如下所示:
當用戶輸入的年齡大于 100 時,也會拋出 MyException 自定義異常,同樣會執行第二個 catch 語句塊中的代碼,打印出異常信息,如下所示:
在主方法 main() 中,我們使用了 if…else 語句來判斷用戶輸入的年齡是否合法,如果不合法,則拋出自定義異常 MyException;這里我們調用的是 MyException 類的有參構造函數,用以提示用戶錯誤原因。接下來在 catch 語句塊中捕獲該異常,并調用 getMessage() 方法輸出異常信息。
注意,自定義異常類 MyException 繼承自 Exception,所以它能夠使用 Exception 類的 getMessage() 方法。