异常处理机制主要回答了三个问题
- What:异常类型回答了什么被抛出
- Where:异常堆栈跟踪回答了在哪抛出
- Why:异常信息回答了为什么抛出
Error和Exception区别
从概念角度解析Java的异常处理机制
Error :程序无法处理的系统错误,编译器不做检查.
Exception:程序可以处理的异常,捕获后可能恢复.
总结:前者是程序无法处理的错误,后者是可以处理的异常.
RuntimeException:不可预知的,程序应当自行避免
非RuntimeException:可预知的,从编译器校验的异常
从责任角度看
- Error属于JVM需要负担的责任
- RuntimeException是程序应该负担的责任
- CheckedException可检查异常是Java编译器应该负担的责任.
常见Error以及Exception
Java的异常处理机制
- 抛出异常:创建异常对象,交由去年时系统处理
- 捕获异常:寻找合适的异常处理器处理异常,否则终止运行
Java异常的处理原则
- 具体明确:抛出的异常应能通过异常类名和message准确说明异常的类型和产生异常的原因
- 提早抛出:应尽可能早的发现并抛出异常,便于精确定位问题
- 延迟捕获:异常的捕获和处理应尽可能延迟,让掌握更多信息的作用域来处理异常.
高效主流的异常处理框架