T31训练营 DAY7

Java异常处理最佳实践

Java开发手册(嵩山版) > 二、异常日志 > (二) 异常处理 (第30页)

不足1:

4. 【强制】捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容。

本条规约表述不够清晰。

什么是处理?
常见的处理方式有哪些?
什么是不想处理?

常见的异常处理方式有:
1.记录日志
2.尝试恢复
3.降级使用默认值
4.转换成上层异常类型
5.不处理、忽略
6.以上几种的组合

有些场景下不处理,什么都不做,连日志都不输出,也是一种处理方式。所以不能简单的认为不处理就是什么都没有决策。但为了避免与真的什么都不做区分开,建议加一句注释说明该异常忽略无需处理及原因。

不想处理容易让人感觉是开发者主观态度来决定,其实更加准确的表述是,当前上下文中缺乏足够的信息来决定如何处理该异常时,应把异常继续向上抛出,直到有足够的信息来决定如何处理异常。

不足2:


异常处理的规约,缺少一条一般情况下避免在单个catch块中使用Exception捕获全部异常,应使用多个catch块分别捕获具体的异常子类。

相关的规约:

8. 【强制】捕获异常与抛异常,必须是完全匹配,或者捕获异常是抛异常的父类。

9. 【强制】在调用 RPC、二方包、或动态生成类的相关方法时,捕捉异常必须使用 Throwable类来进行拦截。

但都未全完表述清楚上述的意思。

新手在处理异常时最容易写成在单个catch块中使用Exception捕获全部异常,且处理方式仅仅是打印输出异常信息,也就是俗称的吞掉了异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值