剑指Offer(类库)——Java异常体系
在java的异常处理机制中,主要回答了三个问题
- What:异常类型回答了什么被抛出。
- Where:异常堆栈跟踪回答了在哪抛出。
- Why:异常信息回答了为什么被抛出。
下面来主要回答一下面试的时候热点的问题:
- Error和Exception的区别是什么
Java的异常体系如下:
其中:
Error:一般是指与JVM相关的问题,比如说系统崩溃,也就是说是程序无法处理的系统错误如堆栈溢出,内存泄露,编译器无法检查到。也就是说,Error是程序无法处理的错误。
Exception:是指可以让程序去处理的异常,处理之后,程序就可以恢复成运行。也就是说,Exception是程序可以处理的错误。
然后来介绍一下上面的这张图中Exception的子类,其中一个叫做RuntimeException,另一组则是非RuntimeException。
RuntimeException:指的是不可预知的,程序应该自行避免掉。
非RuntimeException:指的是不可预知的,从编译器检验到的异常。
而这两种错误,从责任的角度来看:
- Error属于JVM需要负担的责任
- RuntimeException是程序应该负担的责任
- Checked Exception可检查异常是java编译器应该负担起的责任。
常见的错误如下: