3種類の例外安全性
関数の例外安全性には、以下の3種類がある。
- 資源解放保証((「資源解放保証」「原子性保証」「無送出保証」っていう言葉は
- bold;">いま勝手に作りました、すいません。Exceptional C++ などでは「弱い保証」「強い保証」「投げない保証」と呼ばれていますが、「強い」「弱い」が曖昧で分かりにくいのと「投げない」が漢字じゃないのが嫌だったので。)):例外が送出された場合でも、その関数呼び出しはリソースリークを起こさない。
- 原子性保証
- 例外が送出された場合、その関数呼び出しは何の変化ももたらさない。
- 無送出保証
- その関数は決して例外を送出しない。
それぞれの意味を正しく理解して、堅牢なプログラムを書けないといけない。