Effective C++ Item 292009年08月13日 03時29分10秒

  • 安全な例外処理を行なう関数は、例外が発生してもリソースを漏らす事もデータ構造を中途半端な状態にせずに終了する。安全な例外処理には、基本的な保証、強い保証、例外無しに分けられる。
  • 強い保証は copy-and-swap を中心に実装できる事が多いが、往々にして不可能なことも多い。
  • 関数の中で使われている一番弱い関数が、その関数の保証できる強度となる。

強い保証とは、関数が呼ばれた後の状態が呼ばれる前の状態か正しく処理が完了したかのどちらかしかない関数の処理を指す。基本的な保証とは、内部のリソースが正しく処理され、データ構造も整合性を保っている事を指す。しかし、一部のみの更新が行なわれるなど、データの状態としては正しくない事もあり得る。もちろん一番良いのは例外を投げない事である。

投げる例外を明示的に示す場合は以下の様に行なう。


int doSomething() throw(std::bad_alloc);

また、throw の中が空なのは例外を投げないのではなく、投げられた場合の例外がとても深刻なのを示す。


int doSomethingElse() throw();

前回次回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2009/08/13/4507658/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。