接下来讨论最后一种异常安全保证:不会失败。 通常,我们并不需要这么强的安全保证,但是我们至少必须保证三类过程不会失败:析构函数,释放类函数,swap。析构和释放函数不会失败,这是RAII技术有效的基石,swap不会失败,是为了“在决不失败的过程中,把对象替换到目标状态”。我们前面的所有讨论都是建立在这三类过程不会失败的基础上的,在这里,弥补了上面的那个疏漏。 一般而言,语言内部类型的赋值、取地址等运算是不会发生异常的,上述三类过程逻辑上也是不会发生异常的。内部运算中,除法运算可能抛出异常。但是地址访问错通常是一种错误,而不是异常,我们本应该在前条件检查中就发现的这一点的。所有不会发生异常操作的简单累加,仍然不会导致异常。 好了,现在我们可以总结一下编写异常安全代码的几条准则了: 1.只在应该使用异常的地方抛出异常 另外,还有一些语言细节问题,因为和这个主题有关也一并列出: 1.不要这样抛出异常:throw new exception;这将导致内存泄漏。 |
正在阅读:如何编写异常安全的C++代码如何编写异常安全的C++代码
2006-04-18 09:57
出处:
责任编辑:xietaoming
键盘也能翻页,试试“← →”键