Java 菜鸟教程

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java 异常处理

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java 程序创建自定义异常

Java 实例大全

在此示例中,我们将学习在Java中创建自定义的已检查和未检查的异常。

要理解此示例,您应该了解以下Java编程主题:

示例1:创建自定义检查异常的Java程序

import java.util.ArrayList;
import java.util.Arrays;

//创建一个检查异常类
class CustomException extends Exception {
  public CustomException(String message) {
    //调用Exception类的构造函数
    super(message);
  }
}

class Main {

  ArrayList<String> languages = new ArrayList<>(Arrays.asList("Java", "Python", "JavaScript"));

  //检查异常
  public void checkLanguage(String language) throws CustomException {

    // 如果language 已经出现在 ArrayList 中,则抛出异常
    if(languages.contains(language)) {
      throw new CustomException(language + " 已经存在");
    }
    else {
      // 将language 插入到 ArrayList
      languages.add(language);
      System.out.println(language + " 被添加到ArrayList");
    }
  }

  public static void main(String[] args) {

    // 创建Main类的对象
    Main obj = new Main();

    //使用try…catch处理异常
    try {
      obj.checkLanguage("Swift");
      obj.checkLanguage("Java");
    }

    catch(CustomException e) {
      System.out.println("[" + e + "] 发生异常");
    }
  }
}

输出结果

Swift 被添加到ArrayList
[CustomException: Java already exists] 发生异常

在上面的示例中,我们扩展了Exception类以创建一个名为CustomException的自定义异常。 在这里,我们使用super()关键字从CustomException类中调用Exception类的构造函数。

在方法checkLanguage()中,我们检查了异常情况,如果发生异常,则try..catch块将处理该异常。

在这里,这是检查的异常。我们还可以在Java中创建未经检查的异常类。要了解有关已检查和未检查的异常的更多信息,请访问Java Exception

示例2:创建自定义未经检查的异常类

import java.util.ArrayList;
import java.util.Arrays;

//创建未检查的异常类
class CustomException extends RuntimeException {
  public CustomException(String message) {
    //调用RuntimeException的构造函数
    super(message);
  }
}

class Main {

  ArrayList<String> languages = new ArrayList<>(Arrays.asList("Java", "Python", "JavaScript"));

  //检查异常情况
  public void checkLanguage(String language) {

    //如果ArrayList中已存在编程语言,则引发异常
    if(languages.contains(language)) {
      throw new CustomException(language + " 已经存在");
    }
    else {
      //将编程语言插入到ArrayList
      languages.add(language);
      System.out.println(language + " 被添加到ArrayList");
    }
  }

  public static void main(String[] args) {

    //创建Main类的对象
    Main obj = new Main();

    //检查编程语言是否已经存在
    obj.checkLanguage("Swift");
    obj.checkLanguage("Java");
  }
}

输出结果

Swift is 被添加到ArrayList
Exception in thread "main" CustomException: Java already exists
        at Main.checkLanguage(Main.java:21)
        at Main.main(Main.java:37)

在上面的示例中,我们扩展了RuntimeException类以创建未经检查的自定义异常类。

在这里,您可能已经注意到,我们没有声明任何try ... catch块。这是因为未检查的异常是在运行时检查的。

除此之外,未检查异常的其他功能与上述程序类似。

Java 实例大全