2

我只是不记得用于此属性和其他相关属性的术语。

编辑 - 也许这样的概念不存在,但我记得在 Effective C++(或 More Effective C++)中读过一些东西,他主张使用交换在函数中最后提交更改,因为向量交换函数保证不会抛出异常。

4

3 回答 3

2

我认为您的意思是说该功能是“异常安全的”。参见例如http://en.wikipedia.org/wiki/Exception_safety

维基百科的文章将安全性进一步划分为各个级别。这是与这里相关的一个:

2. 提交或回滚语义,也称为强异常安全或无更改保证:操作可能会失败,但保证失败的操作没有副作用,因此所有数据都保留原始值。

有一个介绍异常安全和提交或回滚语义的 STL 设计文档的参考:http ://www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.asc

于 2008-11-12T10:38:53.957 回答
2

您可能正在考虑异常保证,尤其是“强保证”。

于 2008-11-12T10:42:52.997 回答
1

阅读您的编辑后,我怀疑您的标题略有错误。您真的是说无论是否抛出异常(按照当前措辞)都没有副作用,或者在抛出异常时它没有副作用,但是如果该方法在没有引发异常的情况下完成,那么它将/可以有副作用吗?有很大的不同:)

后者在 Accelerated C# 2008 中被描述为“异常中立”。

于 2008-11-12T10:55:51.113 回答