原文写的非常好,来自这里 一个函数如果说是“异常安全”的,必须同时满足以下两个条件:1.不泄漏任何资源:2.不允许破坏数据. 我们先通过两个反面的例子开始. 第一个是造成资源泄漏的例子.一个类Type,内含一个互斥锁成员 Mutex mutex,以及一个成员函数void Func().假设Func函数的实现如下所示: 首先是获得互斥锁,中间是做该做的事,最后释放互斥锁.从功能上来讲很完整,没任何问题.但从异常安全角度来说,它却不满足条件.因为一旦DoSomething()函数内部导致异常,UnL…