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 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 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块。这是因为未检查的异常是在运行时检查的。
除此之外,未检查异常的其他功能与上述程序类似。