面试题:Java 中 Exception 和 Error 有什么区别?

在 Java 中,Exception 和 Error 都是 Throwable 类的子类,但它们的作用和使用场景不同:

  1. Exception:
    • Exception 表示程序运行时可能出现的异常情况,通常是可以通过代码捕获和处理的。
    • 它分为两类:
      • Checked Exception(受检异常):必须在编译时处理,否则代码无法通过编译。例如:IOExceptionSQLException
      • Unchecked Exception(非受检异常):通常是程序逻辑错误,不需要在编译时显式处理。例如:NullPointerExceptionArithmeticException
    • Exception 通常是由程序的外部因素或逻辑错误引起的,开发者可以通过 try-catch 块捕获并处理这些异常。
  2. 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
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容