Java 异常注意事项
目录
Core Java 中谈及使用异常机制时简易的技巧:
- 异常处理不能代替简单的测试 一般来说,异常处理流程比起简单的测试会花费更多时间,只应该在发生“异常”状况时使用异常。
- 不要过分细化异常 过分细化异常(使用多个 try-catch 结构)会让代码急剧膨胀,代码的花括号嵌套变多,易读性也十分糟糕。尤其当多个异常状况相邻时,使用 1 个 try 块包裹所有语句,同时后缀不同 catch 块是更好的做法。
- 利用异常层次结构 不要为逻辑错误抛出已检查(checked)异常,也不要抛出顶级异常。如果必要,将底层异常包裹转换成自定义的或描述更清晰的异常。
- 不要压制异常
- 检测错误时,“苛刻”要比放任更好 如有必要,尽可能早地抛出异常。比如:对于某些特定操作,返回 null 类型,再在调用的地方检测并抛出 NullPointerException 是不好的做法。
- 不要羞于传递异常 如果可以,尽量在高层地地方处理异常、通知用户、修正命令,这样更加符合逻辑,代码更易读。
规则 5、6 可以合并为“早抛出,晚捕获”。
另外,书中还有其他提及地知识没有列出:
- 尽量使用有资源地 try 块,方便自动关闭以及捕获全部异常
注意:多个资源赋值语句使用 分号
;
隔开
- 多个异常地处理方法相同时,不要使用父类异常,而是使用多异常捕获语句
|
|
- 包装异常再抛出时如果可以,最好携带原始信息
|
|