更新時間:2022-09-02 12:12:53 來源:動力節(jié)點(diǎn) 瀏覽1812次
在 Java 中,我們可以創(chuàng)建自己的異常,它們是 Exception 類的派生類。創(chuàng)建我們自己的異常稱為自定義異?;蛴脩舳x的異常?;旧?,Java自定義異常用于根據(jù)用戶需要自定義異常。
考慮示例 1,其中 InvalidAgeException 類擴(kuò)展了 Exception 類。
使用自定義異常,我們可以擁有自己的異常和消息。在這里,我們向超類的構(gòu)造函數(shù)傳遞了一個字符串,即可以在我們創(chuàng)建的對象上使用 getMessage() 方法獲得的異常類。
在本節(jié)中,我們將學(xué)習(xí)如何在 Java 程序中實(shí)現(xiàn)和使用自定義異常。
Java 異常幾乎涵蓋了編程中可能出現(xiàn)的所有一般類型的異常。但是,我們有時需要創(chuàng)建自定義異常。
以下是使用自定義異常的幾個原因:
捕獲現(xiàn)有 Java 異常的子集并提供特定處理。
業(yè)務(wù)邏輯異常:這些是與業(yè)務(wù)邏輯和工作流相關(guān)的異常。對于應(yīng)用程序用戶或開發(fā)人員了解確切的問題很有用。
為了創(chuàng)建自定義異常,我們需要擴(kuò)展屬于 java.lang 包的 Exception 類。
考慮以下示例,其中我們創(chuàng)建了一個名為 WrongFileNameException 的自定義異常:
公共類 WrongFileNameException 擴(kuò)展 異常 {
公共 錯誤文件名異常(字符串錯誤消息){
超級(錯誤消息);
}
}
示例 1:
讓我們看一個 Java 自定義異常的簡單示例。在以下代碼中,InvalidAgeException 的構(gòu)造函數(shù)將字符串作為參數(shù)。使用 super() 方法將此字符串傳遞給父類 Exception 的構(gòu)造函數(shù)。此外,可以不使用參數(shù)調(diào)用 Exception 類的構(gòu)造函數(shù),并且調(diào)用 super() 方法不是強(qiáng)制性的。
TestCustomException1.java
// 表示自定義異常的類
類 InvalidAgeException 擴(kuò)展 異常
{
公共 InvalidAgeException(字符串 str)
{
// 調(diào)用父異常的構(gòu)造函數(shù)
超級(str);
}
}
// 使用自定義異常 InvalidAgeException 的類
公共類 TestCustomException1
{
// 檢查年齡的方法
靜態(tài)無效 驗(yàn)證(整數(shù) 年齡) 拋出 InvalidAgeException{
如果(年齡 < 18 ){
// 拋出一個用戶定義的異常對象
throw new InvalidAgeException( "年齡無效投票" );
}
否則 {
System.out.println( "歡迎投票" );
}
}
// 主要方法
公共靜態(tài)無效 主(字符串參數(shù) [])
{
嘗試
{
// 調(diào)用方法
驗(yàn)證(13 );
}
捕捉 (InvalidAgeException ex)
{
System.out.println( "捕獲異常" );
// 打印來自 InvalidAgeException 對象的消息
System.out.println( "發(fā)生異常:" + ex);
}
System.out.println( "剩下的代碼..." );
}
}
輸出:

示例 2:
TestCustomException2.java
// 表示自定義異常的類
MyCustomException 類擴(kuò)展 異常
{
}
// 使用自定義異常 MyCustomException 的類
公共類 TestCustomException2
{
// 主要方法
公共靜態(tài)無效 主(字符串參數(shù) [])
{
嘗試
{
// 拋出一個用戶定義的異常對象
拋出新的 MyCustomException();
}
捕捉 (MyCustomException ex)
{
System.out.println( "捕獲異常" );
System.out.println(ex.getMessage());
}
System.out.println( "剩下的代碼..." );
}
}
輸出:

相關(guān)閱讀

初級 202925

初級 203221

初級 202629

初級 203743