剑指Offer(类库)——Java异常体系
Java异常处理机制中主要回答了三个问题:
- What:异常类型回答了什么被抛出;
- Where:异常堆栈跟踪回答了在哪抛出;
- Why:异常信息回答了为什么被抛出。
下面来说一下经常会被问到的问题:Exception和Error的区别
Java异常体系结构如下:
Error:一般是指JVM相关的问题,比如说系统崩溃,就是说程序无法处理的系统错误如堆栈溢出、内存泄漏,编译器无法检测到。Error是程序无法处理的错误。
Exception:可以让程序去处理的异常,处理之后程序可以恢复运行。Exception是程序可以处理的错误。
来介绍一下Exception的子类:一个是RuntimeException和非RuntimeException。
RuntimeException:不可预知的程序应该自行避免掉。
非RuntimeException:可预知的,从编译器校验的异常。
从责任角度来看:
- Error属于JVM需要负担的责任;
- RuntimeException是程序应该负担的责任;
- Checked Exception可检查异常是Java编译器应该负担的责任。
常见的错误如下: