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 {
// 如果 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();
// 使用 try...catch 处理异常
try {
obj.checkLanguage("Swift");
obj.checkLanguage("Java");
}
catch(CustomException e) {
System.out.println("[" + e + "] 异常发生");
}
}
}
输出
Swift 已添加到 ArrayList
[CustomException: Java 已经存在] 异常发生
在上面的示例中,我们扩展了 Exception
类来创建一个名为 CustomException
的自定义异常。这里,我们使用 super()
关键字从 CustomException
类调用 Exception
类的构造器。
在 checkLanguage()
方法中,我们检查了异常条件,如果发生异常,try..catch 块处理异常。
这是一个已检查异常。我们也可以在 Java 中创建未检查的异常类。要了解更多关于已检查和未检查异常的信息,请访问 Java 异常。
示例 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 已添加到 ArrayList
Exception in thread "main" CustomException: Java 已经存在
at Main.checkLanguage(Main.java:21)
at Main.main(Main.java:37)
在上面的示例中,我们扩展了 RuntimeException
类来创建一个未检查的自定义异常类。
这里,您可以注意到,我们没有声明任何 try...catch 块。这是因为未检查的异常是在运行时检查的。
除此之外,未检查异常的其他功能与上述程序类似。