Error和Exception

188 阅读1分钟

Error(错误)

Error对象由虚拟机生成并抛出,它是**程序无法处理的错误**,
大多数与代码编写者的操作无关,而是代码运行时JVM出现的问题。
这种异常发生后会直接导致虚拟机出现不可处理或不可恢复的情况。
所以这种异常不可能被抓取到,如OutOfMemoryError、NoClassDefFindError等。

Exception(异常)

Exception是**程序本身可以处理的异常**,我们可以获取这种异常,并对其做业务外的处理。
Exception又分为两类: **检查性异常**和**非检查性异常**。
检查性异常指必须被try..catch捕获或throws抛出的,如IOException。
非检查性异常(运行时异常)指可以忽略捕获操作的异常,如NullPointerException。

还有一个try catch finally中关于return的问题: 如果try中有return,这时并没有先返回,而是存在一个临时堆栈中,直到执行到finally中对比其中有没有return,有就用finally中的,没有再从那个堆栈中取出并返回。

详情可参考:blog.csdn.net/weixin_4212…