Java开发手册(嵩山版) > 二、异常日志 > (二) 异常处理 (第30页)
不足1:
4. 【强制】捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容。
本条规约表述不够清晰。
什么是处理?
常见的处理方式有哪些?
什么是不想处理?
常见的异常处理方式有:
1.记录日志
2.尝试恢复
3.降级使用默认值
4.转换成上层异常类型
5.不处理、忽略
6.以上几种的组合
有些场景下不处理,什么都不做,连日志都不输出,也是一种处理方式。所以不能简单的认为不处理就是什么都没有决策。但为了避免与真的什么都不做区分开,建议加一句注释说明该异常忽略无需处理及原因。
不想处理容易让人感觉是开发者主观态度来决定,其实更加准确的表述是,当前上下文中缺乏足够的信息来决定如何处理该异常时,应把异常继续向上抛出,直到有足够的信息来决定如何处理异常。
不足2:
异常处理的规约,缺少一条一般情况下避免在单个catch块中使用Exception捕获全部异常,应使用多个catch块分别捕获具体的异常子类。
相关的规约:
8. 【强制】捕获异常与抛异常,必须是完全匹配,或者捕获异常是抛异常的父类。
9. 【强制】在调用 RPC、二方包、或动态生成类的相关方法时,捕捉异常必须使用 Throwable类来进行拦截。
但都未全完表述清楚上述的意思。
新手在处理异常时最容易写成在单个catch块中使用Exception捕获全部异常,且处理方式仅仅是打印输出异常信息,也就是俗称的吞掉了异常。
Java异常处理最佳实践
328

被折叠的 条评论
为什么被折叠?



