例外安全
例外発生時に適切に処理されることを保証することを意味する
例外安全なコードとは
リソース漏れを起こさない
基本保証
強い保証
no-fail保証
データ構造が無効な状態にならない
包含関係になっている
基本保証$ \subset強い保証$ \subsetno-fail保証
basic guarantee
単独のデータが矛盾なく利用可能である
データの整合性が保たれる
オブジェクト内でリソースリークが発生しない ref なにをいっているのかわからんmrsekut.icon
安全なソフトウェアを作るために、最低限必須
これがないと、例外が起きたときは詰む。強制終了するしかない。
最もゆるい
ここまでしかない言語って何?
strong guarantee
ロールバックを行う保証
メソッド内で例外が発生した場合に、オブジェクトの内部状態は変更されない
DBのトランザクション的な
try...catchってどうなん?
例外回復を行う
nothrow guarantee
必ず例外が発生しない保証
四則演算とか
一部のメソッドだけが満たすことが出来る
最も厳しい。これが理想
これがいけてる言語ってなに?
絶対に例外を送出しない
あー、言語全体が上の保証を全て満たしている、とかではなく、一つの言語のこの機能はここの保証まで満たしていて、この機能はここまでしか満たしていない、みたいな感覚なのか
あ、ちがうか。せめて基本保証は満たすように意識して実装しろよお前ら、ってことか。
参考
具体例のコードがあってわかりやすい