第64条:努力使失败保持原子性

异常需要保存失败发生时的状态,并且不可改变的。最简单的办法是,创建一个不可变对象,又或者先检验参数的有效性,在检查失败时抛出异常。第三种办法是编写一段恢复代码,用于回滚,主要用于永久性(基于磁盘的)数据结构。最后一种是临时拷贝一份数据,在执行成功后再替代对象的内容。