java中异常主要有三类:检查异常,运行时异常,错误。
错误是由于外部原因无法预测,运行时异常是由于内部原因无法预测。
异常处理机制
try…catch:
一个try可以多个catch
catch块:先处理小异常,再处理大异常,即Exception放在最后
finally:资源回收,不能使用return或throw,如果使用了,会导致try和catch中的return或throw失效。
异常类继承体系:
三类异常:
Checked异常:
只有java提供了Checked异常,这都是可以被处理的异常,如果没有处理,则编译时发生错误。
两种处理方式:
知道怎么处理用try…catch
不知道怎么处理,要在定义方法时抛出异常
Runtime异常体系:
可用try…catch
异常跟踪栈:
控制台打印的日志。
方法调用与异常的传播相反。
异常处理规则:
4个目标:
代码混乱最小化
捕获并保留诊断信息
通知合适的人员
采用合适的方式结束异常活动
1、不要过度使用 有时候可以sout,continue,就不用throw了,通过catch捕获异常,效率要差 异常只用于处理非正常的情况,不要用异常处理代替正常的流程控制 2、不要用过大的try块 3、避免用Catch All printStackTrace() 4、不要忽略捕获到的异常 - 处理异常 - 重新抛出异常 - 合适的层处理异常