Java异常体系

Java 的异常体系由一系列类构成,这些类派生自java.lang.Throwable。Java 的异常体系主要分为三大类:Checked Exception(受检查异常)、Unchecked Exception(非检查异常)和 Error(错误)。下面是对这些类的详细介绍:

1. Throwable

Throwable是 Java 异常体系的根类。所有的异常类和错误类都直接或间接继承自Throwable

2. Exception

Exception类是Throwable的子类,表示程序可以捕获并且可以合理处理的异常。

2.1 Checked Exception

Checked Exception 是指在编译时需要被显式处理的异常。这些异常通常是由于外部因素(如 I/O 操作、数据库访问等)引起的,必须通过try-catch块或在方法上使用throws声明处理。

常见的受检查异常包括:

  • IOException:文件操作失败时抛出。
  • SQLException:数据库操作失败时抛出。
  • ClassNotFoundException:试图加载不存在的类时抛出。
public void readFile(String fileName) throws IOException {
    FileReader file = new FileReader(fileName);
    BufferedReader fileInput = new BufferedReader(file);
    fileInput.close();
}
2.2 Unchecked Exception

Unchecked Exception 是指在编译时不需要被显式处理的异常。这些异常通常是编程错误(如逻辑错误或不正确的 API 使用)引起的,属于运行时异常。

常见的非检查异常包括:

  • NullPointerException:试图访问null对象的成员时抛出。
  • ArrayIndexOutOfBoundsException:数组下标越界时抛出。
  • IllegalArgumentException:传递非法参数时抛出。
public void divide(int a, int b) {
    if (b == 0) {
        throw new IllegalArgumentException("Divisor cannot be zero");
    }
    int result = a / b;
}

3. Error

Error类是Throwable的子类,用于表示系统级错误和严重的问题,程序一般不应该捕获这些错误。Error通常是由 JVM 抛出的,表示应用程序无法从中恢复的严重错误。

常见的错误包括:

  • OutOfMemoryError:JVM 内存不足时抛出。
  • StackOverflowError:方法调用栈溢出时抛出。
public void infiniteRecursion() {
    infiniteRecursion();
}

Java 异常层次结构总结

  1. Throwable
    • Exception
      • Checked Exception(受检查异常)
        • IOException
        • SQLException
        • ClassNotFoundException
      • Unchecked Exception(非检查异常)
        • NullPointerException
        • ArrayIndexOutOfBoundsException
        • IllegalArgumentException
    • Error
      • OutOfMemoryError
      • StackOverflowError

如何选择异常处理方式

  • 使用Checked Exception当异常是可以预见的并且可以合理恢复时。
  • 使用Unchecked Exception当异常是编程错误或逻辑错误时。
  • 对于Error,一般不进行处理,因为它表示严重的系统错误。

通过合理地使用异常处理机制,可以使 Java 应用程序更加健壮和可靠。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

济南大飞哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值