剑指Offer(类库)——Java异常体系

在java的异常处理机制中,主要回答了三个问题

  • What:异常类型回答了什么被抛出。
  • Where:异常堆栈跟踪回答了在哪抛出。
  • Why:异常信息回答了为什么被抛出。

下面来主要回答一下面试的时候热点的问题:

  • Error和Exception的区别是什么

Java的异常体系如下:

剑指Offer(类库)——Java异常体系

其中:

Error:一般是指与JVM相关的问题,比如说系统崩溃,也就是说是程序无法处理的系统错误如堆栈溢出,内存泄露,编译器无法检查到。也就是说,Error是程序无法处理的错误。

Exception:是指可以让程序去处理的异常,处理之后,程序就可以恢复成运行。也就是说,Exception是程序可以处理的错误。

然后来介绍一下上面的这张图中Exception的子类,其中一个叫做RuntimeException,另一组则是非RuntimeException

RuntimeException:指的是不可预知的,程序应该自行避免掉。
非RuntimeException:指的是不可预知的,从编译器检验到的异常。

而这两种错误,从责任的角度来看:

  1. Error属于JVM需要负担的责任
  2. RuntimeException是程序应该负担的责任
  3. Checked Exception可检查异常是java编译器应该负担起的责任。

常见的错误如下:

剑指Offer(类库)——Java异常体系