跟我学(Effective Java 2)第63条:在细节消息中包含能捕获失败的信息

第63条:在细节消息中包含能捕获失败的信息

当程序由于未被捕获的异常而失败的时候,系统会自动打印该异常的信息,在堆栈中包含该异常的字符串表示法,即它的toString方法的调用结果,包含了一系列信息:该异常的类名和细节消息。通常,这是程序员在调查程序失败原因的必要的信息。如果这个失败不易重现,这失败的信息就异常重要,异常的细节消息应该捕获住失败,便于以后分析。

为了捕获失败,异常的细节信息应该包含所有“对该异常有贡献”的参数和域的值。 每一种情形都代表了不同的问题,如果程序员知道应该去查找那种错误,就可以极大的加速诊断过程。

为了确保在异常的细节信息中包含足够的能捕获失败的信息,一种办法是在异常的构造器而不是字符串细节消息中引入这些消息。 然后,有了这些信息,只要把他们放到消息描述中,就可以自动产生细节消息。

遗憾的是,Java平台类库并没有广泛的使用这种做法,但是,这种做法仍然值得大力推荐。他使程序员更加易于抛出异常以捕获失败。实际上,这种做法使程序员不像捕获失败都难!这种做法可以有效地把代码集中起来放在异常类中,由这些代码对异常类自身中的异常产生高质量的细节消息,而不是要求类的每个用户都多余的产生细节信息。

(同58条的建议)为异常的“失败捕获”信息提供一些访问方法是合适的提供一些访问方法是合适的。提供这样的访问方法对于受检的异常,比对于未受检的异常更为重要,因为失败——捕获信息对于从失败中恢复是非常有用的。程序员希望通过程序的手段来访问未受检异常的细节,这很少见(尽管也是可以想象得到的)。然而,即使对于未受检的异常,作为一般原则提供这些访问方法也是明智的。(见10条)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值