——>第64条:努力使失败保持原子性:
一般而言,失败的方法调用应该使对象保持在被调用之前的状态。具有这种属性的方法被称为具有失败原子性(failure atomic)
-> 最简单的办法就是设计一个不可变的对象(见第15条)。若对象是不可变的,失败 原子性就是显然的;
-> 对于在可变对象上执行操作的方法:在执行操作之前检查参数的有效性(见第38条)。这可以使得在对象的状态被修改之前,先抛出适当的异常;
-> 第三种没有那么常用:做法是编写一段恢复代码(recovery code),由它来拦截操作过程中发生的失败,以及使对象回滚到操作开始之前的状态上(主要用于永久性/磁盘的数据结构);
-> 最后一种获得失败原子性的办法是:在对象的一份临时拷贝上执行操作,当操作完成之后再用临时拷贝中的结果代替对象的内容;
Effective Java笔记
最新推荐文章于 2024-05-02 23:46:17 发布