在 Java 中,Error 和 Exception 是异常处理机制的两个核心类,它们都继承自 Throwable 类。关键区别在于,异常(Exception)通常可以被程序捕获和处理,而错误(Error)则往往无法恢复,可能导致 JVM 终止运行。

Error
Error 表示无法处理的严重问题,通常与系统资源或 JVM 内部错误相关,例如 OutOfMemoryError。当这类错误发生时,JVM 通常会选择终止程序,因此在编程中我们一般不需要主动处理它们。
Exception
Exception 类及其子类代表程序运行过程中可以捕获和处理的异常情况,通常与应用程序逻辑相关,如输入不合法、文件访问失败或网络故障。常见例子包括 NullPointerException、IndexOutOfBoundsException 和 ClassCastException。
Exception 主要分为两类:受检异常(checked exceptions) 和 非受检异常(unchecked exceptions)。

1. 受检异常(Checked Exceptions)
编译器强制要求处理或声明的异常,例如 IOException。在编写代码时,必须使用 try-catch 块捕获或通过 throws 关键字声明,否则编译会失败。
示例代码:
public void readFile() throws IOException {
FileReader file = new FileReader("somefile.txt");
BufferedReader fileInput = new BufferedReader(file);
// 其他代码
}
2. 非受检异常(Unchecked Exceptions)
编译器不强制处理的异常,如 NullPointerException 或 ArrayIndexOutOfBoundsException。尽管无需在编译时声明,但在编写健壮代码时,预防和处理这类异常仍然非常重要。
示例代码:
public class NullPointerExample {
public static void main(String[] args) {
String text = null;
try {
int length = text.length(); // 这里会抛出 NullPointerException
} catch (NullPointerException e) {
System.out.println("Caught NullPointerException: " + e.getMessage());
}
}
}
理解 Error 和 Exception 的区别对于提升代码稳定性和应对技术面试都至关重要,有助于在开发中合理设计异常处理策略。
|