更新時(shí)間:2022-09-02 12:12:53 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1520次
在 Java 中,我們可以創(chuàng)建自己的異常,它們是 Exception 類的派生類。創(chuàng)建我們自己的異常稱為自定義異常或用戶定義的異常。基本上,Java自定義異常用于根據(jù)用戶需要自定義異常。
考慮示例 1,其中 InvalidAgeException 類擴(kuò)展了 Exception 類。
使用自定義異常,我們可以擁有自己的異常和消息。在這里,我們向超類的構(gòu)造函數(shù)傳遞了一個(gè)字符串,即可以在我們創(chuàng)建的對(duì)象上使用 getMessage() 方法獲得的異常類。
在本節(jié)中,我們將學(xué)習(xí)如何在 Java 程序中實(shí)現(xiàn)和使用自定義異常。
Java 異常幾乎涵蓋了編程中可能出現(xiàn)的所有一般類型的異常。但是,我們有時(shí)需要?jiǎng)?chuàng)建自定義異常。
以下是使用自定義異常的幾個(gè)原因:
捕獲現(xiàn)有 Java 異常的子集并提供特定處理。
業(yè)務(wù)邏輯異常:這些是與業(yè)務(wù)邏輯和工作流相關(guān)的異常。對(duì)于應(yīng)用程序用戶或開發(fā)人員了解確切的問(wèn)題很有用。
為了創(chuàng)建自定義異常,我們需要擴(kuò)展屬于 java.lang 包的 Exception 類。
考慮以下示例,其中我們創(chuàng)建了一個(gè)名為 WrongFileNameException 的自定義異常:
公共類 WrongFileNameException 擴(kuò)展 異常 {
公共 錯(cuò)誤文件名異常(字符串錯(cuò)誤消息){
超級(jí)(錯(cuò)誤消息);
}
}
示例 1:
讓我們看一個(gè) Java 自定義異常的簡(jiǎn)單示例。在以下代碼中,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ù)
超級(jí)(str);
}
}
// 使用自定義異常 InvalidAgeException 的類
公共類 TestCustomException1
{
// 檢查年齡的方法
靜態(tài)無(wú)效 驗(yàn)證(整數(shù) 年齡) 拋出 InvalidAgeException{
如果(年齡 < 18 ){
// 拋出一個(gè)用戶定義的異常對(duì)象
throw new InvalidAgeException( "年齡無(wú)效投票" );
}
否則 {
System.out.println( "歡迎投票" );
}
}
// 主要方法
公共靜態(tài)無(wú)效 主(字符串參數(shù) [])
{
嘗試
{
// 調(diào)用方法
驗(yàn)證(13 );
}
捕捉 (InvalidAgeException ex)
{
System.out.println( "捕獲異常" );
// 打印來(lái)自 InvalidAgeException 對(duì)象的消息
System.out.println( "發(fā)生異常:" + ex);
}
System.out.println( "剩下的代碼..." );
}
}
輸出:
示例 2:
TestCustomException2.java
// 表示自定義異常的類
MyCustomException 類擴(kuò)展 異常
{
}
// 使用自定義異常 MyCustomException 的類
公共類 TestCustomException2
{
// 主要方法
公共靜態(tài)無(wú)效 主(字符串參數(shù) [])
{
嘗試
{
// 拋出一個(gè)用戶定義的異常對(duì)象
拋出新的 MyCustomException();
}
捕捉 (MyCustomException ex)
{
System.out.println( "捕獲異常" );
System.out.println(ex.getMessage());
}
System.out.println( "剩下的代碼..." );
}
}
輸出:
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743