在 Java 中,Exception
和 Error
都是 Throwable
类的子类,但它们的作用和使用场景不同:
Exception
:Exception
表示程序运行时可能出现的异常情况,通常是可以通过代码捕获和处理的。- 它分为两类:
- Checked Exception(受检异常):必须在编译时处理,否则代码无法通过编译。例如:
IOException
、SQLException
。 - Unchecked Exception(非受检异常):通常是程序逻辑错误,不需要在编译时显式处理。例如:
NullPointerException
、ArithmeticException
。
- Checked Exception(受检异常):必须在编译时处理,否则代码无法通过编译。例如:
Exception
通常是由程序的外部因素或逻辑错误引起的,开发者可以通过try-catch
块捕获并处理这些异常。
Error
:Error
表示严重的系统错误,通常是 JVM 或底层系统资源出现问题,程序无法恢复或处理。- 例如:
OutOfMemoryError
(内存不足)、StackOverflowError
(栈溢出)、NoClassDefFoundError
(类定义未找到)。 Error
通常是由 JVM 或硬件问题引起的,开发者一般不需要捕获或处理这些错误,因为即使捕获了,程序也无法恢复。
总结:
Exception
:表示程序运行时可能出现的异常,通常可以捕获和处理。Error
:表示严重的系统错误,通常无法恢复,程序无法处理。- 两者的主要区别在于:
Exception
是程序逻辑或外部因素引起的,可以处理。Error
是系统或 JVM 级别的错误,通常无法处理。
示例:
// Exception 示例
try {
int result = 10 / 0; // 抛出 ArithmeticException
} catch (ArithmeticException e) {
System.out.println("捕获异常: " + e.getMessage());
}
// Error 示例(通常不需要捕获)
public void causeError() {
throw new OutOfMemoryError("内存不足");
}
THE END
暂无评论内容