`
bingooh
  • 浏览: 52967 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

9.64 尽力保证异常失败的原子性

阅读更多

异常失败的原子性指如果调用对象的方法抛出了异常,那么此对象的状态应与抛出异常前相同。即对象状态不因为抛出异常而改变,只有这样,调用者才可能在捕获异常后进行恢复。

 

保证异常失败的原子性可能的方式包括:

1.执行运算前(这里指执行能够修改对象状态的运算)先检查条件,如检查输入参数值,对象属性。如果不满足条件则触发异常。

 

2.如果不能检查运算条件,那么应该执行可能触发异常的运算,再执行需要修改对象状态的运算

 

3.在异常触发后执行修复代码,适用于基于硬盘的数据操作,如文件和数据库

 

4.复制对象并对其进行运算,如果触发异常不会影响原对象。适用于复制对象不会明显降低性能或增加内存占用的情况(一般来说复制对象可以提高运算速度,但是会增加内存占用)

 

如果不能保证异常失败的原子性,那么应在注释里详细说明。一般在多线程的情况下,较难保证异常失败的原子性

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics