Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java 程序創(chuàng)建自定義異常

Java 實例大全

在此示例中,我們將學(xué)習(xí)在Java中創(chuàng)建自定義的已檢查和未檢查的異常。

要理解此示例,您應(yīng)該了解以下Java編程主題:

示例1:創(chuà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。

示例2:創(chuàng)建自定義未經(jīng)檢查的異常類

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塊。這是因為未檢查的異常是在運行時檢查的。

除此之外,未檢查異常的其他功能與上述程序類似。

Java 實例大全

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清