構造化例外処理 (Structured Exception Handling : SEH)

構造化例外処理はMicrosoft固有の機能であり、「例外処理」とは異なります。たとえば例外処理ならC++から「trycatch」で捕捉できますが、構造化例外処理はVC++では「__try__except__finally」というキーワードを用います。

必要がなければ、標準の例外処理を用います。ただし/clrでコンパイルするときには、構造化例外処理が必須となります。

例外処理モデル (Exception Handling Model)

属性 意味
a C++例外と構造化例外を捕捉
s C++例外を捕捉し、extern "C"と宣言された関数は例外を投げるとコンパイラに指示
c C++例外を捕捉し、extern "C"と宣言された関数は例外を投げないとコンパイラに指示
Arguments - -EH (Exception Handling Model) | MSDN
コンパイラ オプション
オプション 属性 意味
/EHa (/EHca) a C++例外処理を有効。構造化例外処理あり
(/clrオプション指定時の既定値)
/EHs s C++例外処理を有効。構造化例外処理なし
/EHsc sc C++例外処理を有効

参考

参考書

MSDN (Microsoft Developer Network) から検索