1 java异常处理机制主要回答三个问题
1 what:异常类型回答什么被抛出。
2 where:异常堆栈跟踪回答了在哪抛出。
3 why:异常信息回答了为什么被抛出。
2 java的异常体系
RuntimeException:不可预知的,程序应该自行避免。
非RuntimeException:可预知的,从编译器校验的异常。
3 Error和Exception的区别
从概念角度解析java的异常处理机制:
Error:程序无法处理的系统错误,编译不做检查。
Exception:程序可以处理的异常,捕获后可能恢复。
总结:前者是程序无法处理的错误,后者是可以处理的异常。
从责任角度看:
Error属于JVM需要负担的责任。
RuntimeException是程序应该负担的责任。
Checked Exception可检查异常是java虚拟机编译器应该负担的责任。
4 RuntimeException
1 NullPointerException 空指针异常
2 ClassCastException - 类型强转换异常
3 IllegalArgumentException --传递非法参数异常
4 IndexOutOfBoundException ---下标越界异常
5 NumberFormatException ---数字格式异常。
5 非RuntimeException
1 ClassNotFoundException --找不到指定class的异常。
2 IOException - --IO操作异常
6 Error
1 NotClassDefFoundError --找不到class定义的异常
2 StackOverflowError -- 深递归导致栈被耗尽而抛出的异常。
3 OutOfMemoryError --内存溢出异常
7 java异常处理机制
1 抛出异常:创建异常对象,交由运行时系统处理。
2 捕获异常:寻找合适的异常处理器处理异常,否则终止运行。
8 java异常处理的原则
1 具体明确: 抛出的异常应能通过异常类名和message准确说明异常的类型和产生异常的原因。
2 提早抛出:应尽可能早的发现并抛出异常,便于精确定位问题。
3 延迟捕获:异常的捕获和处理应尽可能延迟,让掌握更多信息的作用域来处理异常,