Java中的异常体系归档

174 阅读1分钟

Java中的所有异常都来自顶级父类的Throwable。

Throwable下有两个子类分别是Exception和Error。下面我们分别梳理下这两个子类的情况。

Error是表示非常严重的错误,比如java.lang.StackOverFlowError和java.lang.OutOfMemoryError,这种的异常捕获的意义不大,因为程序可能已经根本运行不了啦,仅仅想靠程序自己去解决是不现实的,可能是虚拟机、磁盘、操作系统层面出现了问题,所以通常不建议在代码中去捕获这种类型的异常Error。

Excepton异常是表示程序出现了Exception时,是可以通过程序自己来搞定的,比如:NullPointerException、IllegalAccessException等,可以捕获这些异常做业务想要的处理。

Exception的子类又可以分为RuntimeException和非RuntimeException两类。

RuntimeException是运行时异常,这个异常是在代码运行过程中抛出来的,属于非检查异常,代码中可以选择捕获处理,也可以不处理,根据自己的实际情况看即可。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能的避免这类型的异常发生,比如常见的有空指针异常、下标越界异常和内存溢出异常,NullPointerException,IndexOutOfBoundsExpetioin等。

非RuntimeException表示非运行期间的异常,也是我们常说的检查异常,是必须进行处理的异常,如果不处理,程序就不能检查异常通过。比如常见的有IOException、SQLException等以及用户自定义的Exception等。