在java中一切皆对象,包括异常也是用对象来表示的,在java中异常体系如下:
所有的异常都继承自Throwable,Throwable下又分为Error和Exception;
Error:是由于系统导致的,一旦发生是程序不可控的,例如内存溢出
Exception又分为运行时异常和非运行时异常,非运行时异常并不是指不在程序运行期间发生,其实Exception都是在程序运行期间发生的,常见的例子如上图
从另外一个角度来看Exception又分为检查异常(非运行时异常)和非检查异常(运行时异常)
检查异常是指:在编译过程中编译器就对其进行检查,要么捕获、要么抛给上层
自定义异常是若没有继承RuntimeException,则该异常是非运行时异常,也是检查异常
error及Exception都是可被捕获的,但是通常的处理时不用捕获error的,出现error后虚拟机会结束线程