Java异常体系以Throwable为根类,其下分为Error和Exception。Error表示系统级问题如OutOfMemoryError,程序无法恢复;Exception分为检查异常(如IOException)需编译期处理,和非检查异常(如NullPointerException)由运行时逻辑错误引发,体现对可恢复与不可控问题的分层处理机制。

Java中的异常继承体系是基于类的层次结构来组织错误处理机制的核心部分。理解这个体系有助于写出更健壮、可维护的代码。
Throwable 是所有异常的根类
在Java中,Throwable 是异常体系的顶层父类。它有两个直接子类:Error 和 Exception,分别表示严重系统问题和程序可以处理的异常情况。
Error 表示严重系统级问题
Error 及其子类用于描述jvm无法处理或不应该被程序捕获的问题。这类问题通常与资源不足或虚拟机内部错误有关。
常见Error包括:
立即学习“Java免费学习笔记(深入)”;
这些错误一般不需要也不建议捕获,程序通常无法恢复。
Exception 分为检查异常和非检查异常
Exception 类代表程序中可能出现的异常情况,分为两类:
1. 检查异常(Checked Exception)
- 继承自 Exception,但不包括 RuntimeException 及其子类
- 编译器强制要求处理或声明,否则无法通过编译
- 典型例子:IOException、SQLException
2. 非检查异常(Unchecked Exception)
- 继承自 RuntimeException
- 运行时才会暴露,编译阶段不强制处理
- 常见类型:NullPointerException、ArrayIndexOutOfBoundsException、IllegalArgumentException
异常处理的设计意义
这种分层设计让开发者能区分不同性质的问题:
- 检查异常适合处理外部不确定性,比如文件读写、网络通信等可预见但不可控的操作
- 运行时异常通常反映程序逻辑错误,应通过编码规范避免
- Error则提示系统级故障,往往需要重启或调整环境
基本上就这些。掌握这个结构后,就能更合理地选择抛出、捕获或声明异常。


