在此示例中,我們將學(xué)習(xí)在Java中創(chuàng)建自定義的已檢查和未檢查的異常。
要理解此示例,您應(yīng)該了解以下Java編程主題:
import java.util.ArrayList;
import java.util.Arrays;
//創(chuàng)建一個檢查異常類
class CustomException extends Exception {
public CustomException(String message) {
//調(diào)用Exception類的構(gòu)造函數(shù)
super(message);
}
}
class Main {
ArrayList<String> languages = new ArrayList<>(Arrays.asList("Java", "Python", "JavaScript"));
//檢查異常
public void checkLanguage(String language) throws CustomException {
// 如果language 已經(jīng)出現(xiàn)在 ArrayList 中,則拋出異常
if(languages.contains(language)) {
throw new CustomException(language + " 已經(jīng)存在");
}
else {
// 將language 插入到 ArrayList
languages.add(language);
System.out.println(language + " 被添加到ArrayList");
}
}
public static void main(String[] args) {
// 創(chuàng)建Main類的對象
Main obj = new Main();
//使用try…catch處理異常
try {
obj.checkLanguage("Swift");
obj.checkLanguage("Java");
}
catch(CustomException e) {
System.out.println("[" + e + "] 發(fā)生異常");
}
}
}輸出結(jié)果
Swift 被添加到ArrayList [CustomException: Java already exists] 發(fā)生異常
在上面的示例中,我們擴(kuò)展了Exception類以創(chuàng)建一個名為CustomException的自定義異常。 在這里,我們使用super()關(guān)鍵字從CustomException類中調(diào)用Exception類的構(gòu)造函數(shù)。
在方法checkLanguage()中,我們檢查了異常情況,如果發(fā)生異常,則try..catch塊將處理該異常。
在這里,這是檢查的異常。我們還可以在Java中創(chuàng)建未經(jīng)檢查的異常類。要了解有關(guān)已檢查和未檢查的異常的更多信息,請訪問Java Exception。
import java.util.ArrayList;
import java.util.Arrays;
//創(chuàng)建未檢查的異常類
class CustomException extends RuntimeException {
public CustomException(String message) {
//調(diào)用RuntimeException的構(gòu)造函數(shù)
super(message);
}
}
class Main {
ArrayList<String> languages = new ArrayList<>(Arrays.asList("Java", "Python", "JavaScript"));
//檢查異常情況
public void checkLanguage(String language) {
//如果ArrayList中已存在編程語言,則引發(fā)異常
if(languages.contains(language)) {
throw new CustomException(language + " 已經(jīng)存在");
}
else {
//將編程語言插入到ArrayList
languages.add(language);
System.out.println(language + " 被添加到ArrayList");
}
}
public static void main(String[] args) {
//創(chuàng)建Main類的對象
Main obj = new Main();
//檢查編程語言是否已經(jīng)存在
obj.checkLanguage("Swift");
obj.checkLanguage("Java");
}
}輸出結(jié)果
Swift is 被添加到ArrayList Exception in thread "main" CustomException: Java already exists at Main.checkLanguage(Main.java:21) at Main.main(Main.java:37)
在上面的示例中,我們擴(kuò)展了RuntimeException類以創(chuàng)建未經(jīng)檢查的自定義異常類。
在這里,您可能已經(jīng)注意到,我們沒有聲明任何try ... catch塊。這是因為未檢查的異常是在運(yùn)行時檢查的。
除此之外,未檢查異常的其他功能與上述程序類似。