例外処理を使用しない対応には
・例外処理を使用できない
・例外処理を使用したくない
の2通りがある。


例外処理を使用できない
①処理系が例外処理をサポートしていない
  ⇒Embedded C++のような非標準処理系の場合
  ⇒マルチタスク環境で例外処理自体はサポートしているものの正常に動作しない場合
②システム全体を分割リンクする(複数のロードモジュールを使用する)
  ⇒例外処理は関数の呼ばれた経路やCallされたデストラクタを記録するため、分割リンクされると正常動作しない
③CをはじめとしたC++以外の言語で記述されたモジュールが混在する
  ⇒例えば、C++→C→C++の場合、Cで記述された関数はC++の例外を正常に伝播できない恐れ有り


例外処理を使用したくない
①例外的な事象を高速に処理したい
  ⇒リアルタイム性が要求される等
②プログラムサイズをできる限り小さくしたい
  ⇒try/catch/throwを明示的に使用しないだけでは不十分
③開発メンバーのC++に対する習熟度が低い
  ⇒


例外処理を使用しないポイント
①送出式(throw)を使用しない
②明示的なデストラクタは定義しない
 ⇒明示的なデストラクタがあると、実際に例外が送出されるかどうかに関わらず、例外が送出されたときにデストラクタを呼び出すためのコードが挿入されるためオーバーヘッドになってしまう
③位置指定形式以外のデフォルトのnew演算子は使用しない
④dynamic_cast演算子を用いた参照型へのキャストは行わない
⑤typeid演算子は使用しない
⑥自立環境(フリースタンディング環境)用のものを除き、標準ライブラリは使用しない


新訂版 More Effective C++/スコット・メイヤーズ
¥3,990
Amazon.co.jp