通過亞伯拉罕,我們有3種類型的異常:強異常保證VS基本異常保證
- 拋出異常
- 基本異常保證
- 強異常保證
基本手段(請更正我如果我錯了),不變量被保留,例如組件的不變量被保存,沒有資源泄漏,wh強烈的是,操作已成功完成或拋出異常,使程序狀態與操作開始之前的狀態完全相同。
什麼意思是不變量被保留了?如果我在我的一個變量中有一個有效的值,那麼它不會(例如一個指針)持有
NULL
?引用Strong異常保證,是否意味着所有的變量都將在拋出異常之前存儲完全相同的值?
例如:
int main()
{
int j = 1;
int *p = &j;
// do some stuff
j = 2;
throw 1;
}
那麼我就扔出後,j
將持有的價值2
或1
?
Regards
您引用了哪些參考? – paulsm4
@ paulsm4:Wikipedia'http:// en.wikipedia.org/wiki/Exception_guarantees' – ron
Dave Abrahams在[**異常 - 通用組件**中的安全性](http:// www.boost.org/community/exception_safety.html)。該文章在該部分頗爲令人信服地回答您的問題:***異常安全的合同基礎*** –