java异常体系结构
Thorwable类是所有异常和错误的父类,其两个子类为Error和Exception,分别表示错误和异常。
Error:Error 属于程序无法处理的错误 ,我们没办法通过 catch 来进行捕获 。例如,Java 虚拟机运行错误(Virtual MachineError)、虚拟机内存不够错误(OutOfMemoryError)、类定义错误(NoClassDefFoundError)等 。这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止。
Exception是程序本身可以处理的异常,这种异常分两大类:受检查异常和不受检查异常。
受检查异常:如果受检查异常没有被 catch/throw 处理的话,就没办法通过编译 。除了RuntimeException及其子类以外,其他的Exception类及其子类都属于受检查异常 。常见的受检查异常有: IO 相关的异常、ClassNotFoundException 、SQLException...
不受检查异常:RuntimeException 及其子类都统称为非受检查异常,
例如:
NullPointerException、
NumberFormatException(字符串转换为数字)、
ArrayIndexOutOfBoundsException(数组越界)、
ClassCastException(类型转换错误)、
ArithmeticException(算术错误)等。