在此示例中,我們將學(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塊。這是因為未檢查的異常是在運行時檢查的。
除此之外,未檢查異常的其他功能與上述程序類似。