アンマネージ C++、Visual Studio 2008 以降で新しいプロジェクトを作成する場合、どの例外処理モデルを使用しますか?
/EHa オプションを使用するとコードの効率が低下し、SEH 例外もキャッチされることは理解していますよね?
そのため、私はそのオプションを避け、通常は /EHsc を使用して、catch(...) ハンドラーで実際にスローされた C++ 例外のみをキャッチし、アクセス違反やその他の構造化された例外をキャッチしていません。コードにアクセス違反がある場合、catch(...) {} でマスクされたくありません。
私は、catch(...) {} が何もしないことを望んでいて、アクセス違反があった場合にそれを実行することさえ望んでいる他の人とコーディングしています。これは、私には本当に悪い考えのように思えます。悪いコーディングによるバグがある場合、耳に指を突っ込んで「ラララララ!」と大声で言いたくないでしょう。プログラムがクラッシュする必要がないようにするには?実際、コーディング エラーが原因でコードが悪い状態になっている場合、本当にコードを続行しますか?
したがって、私の一般的な考えは、/EHa はより大きな/より遅いコードを作成し、致命的なバグが存在する場合に未定義の状態で実行し続けるコードをプログラマが書くことを回避できるようにするというものです。
ところで、私が話しているのはアプリケーションとサービス コードであり、その大部分は私たちが書いているものです。低レベルのデバイスドライバーなどではありません。
あなたの考えを考慮してください。