您的位置:首页 > Web前端

Effective Java 学习笔记(第64条:努力使失败保持元子性)

2014-04-03 16:45 267 查看
一般而言,失败的方法调用应该使对象保持在被调用之前的状态。具有这种属性的方法被成为具有失败原子性(failure atomic)。最简单的办法莫过于设计一个不可变的对象(见第15条)。对于在可变对象上执行操作的方法,获得失败原子性最常见的方法是,在执行操作之前检查参数的有效性(见第38条)。一种类似的获得失败原子性的办法是,调整计算处理过程的顺序,使得任何可能会失败的计算部分都在对象状态被修改之前发生。第三种获得失败原子性的办法远远没有那么常用,用法是编写一段恢复代码(recovery code),由它来拦截操作过程中发生的失败,以及使对象会滚到操作开始之前的状态上。这种办法主要用于永久性的(基于磁盘的(disk-based)数据结构)。最后一种获得失败原子性的办法是,在对象的一份临时拷贝上执行操作,当操作完成之后再用临时拷贝中的结果代替对象的内容。错误(相对于异常)通常是不可恢复的,当方法抛出错误时,它们不需要努力保持失败原子性。一般而言,作为方法规范的一部分,产生的任何异常都应该让对象保持在该方法调用之前的状态。如果违反这条规则,API文档就应该清楚地指明对象将会处于什么样的状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: