JAVA中有许多异常,有编译异常,运行期异常以及错误,但是不管什么异常,他们都继承与Throwable类,异常的架构图如下:
1、Throwable
Throwable是所有异常及错误的父类;
Throwable包含两个子类: Error 和 Exception。它们通常用于指示发生了异常情况。
Throwable包含了其线程创建时线程执行堆栈的快照,它提供了printStackTrace()等接口用于获取堆栈跟踪数据等信息。
2、Error
Throwable的子类,用于捕获系统无法处理的严重问题,大部分Error会导致系统无法正常运行,错误的严重程度在Exception之上。
编译器不会检查Error。
3、Exception
与Error一样,是Throwable的子类,主要用于捕获系统可处理的问题。
4、RuntimeException
运行期异常,是虚拟机正常运行期间抛出异常的父类。
编译器不会检查RuntimeException,为非受检异常。
RuntimeException可以通过异常捕获,可能会影响部分功能的正常运行,但是不会影响程序整体的运行。
5、其他异常
除RuntimeException外的异常,继承与Exception,非运行异常。
编译期就会检查,为受检异常。