Java
中的异常类,包括内置的异常类以及自定义的异常类,都直接或者间接地继承至
java.lang.Throwable
类。
1.
两个主要分支:
在
java.lang
包中,我们可以看到
Throwable
类有两个直接子类:
Error
类和
Exception
类,如图所示:
异常相关类图
图 1. java异常类型层次
Error
类及其子类描述了
java
运行时系统的内部错误和资源耗尽错误。出现这样的错误的,除了通知用户,并接尽力使程序安全地终止之外,没有更好的办法。
Exception
类的层次结构又分为两个分支:一个分支由
RuntimeException
派生,另外一个分支包含除
RuntimeException
类之外的异常类。
2.
未检查的异常
(unchecked exception)
和已检查的异常
(checked exception)
未检查的异常:派生至
Error
类和
RuntimeException
类的所有异常类
(
图中红色所示
)
。
已检查的异常:除未检查的异常类之外的异常类
(
图中黄色所示
)
。
Java
的编译器检查代码中所有的已检查的异常类是否都提供了异常处理程序,如果没有的话,将报错;代码中不需要显示的声明未检查的异常,因为这些异常要么
Error
,代表
java
运行时系统的内部错误;要么是
RuntimeException
,这种错误是由程序员引起的错误,完全可以修正代码解决。