構造化例外処理はMicrosoft固有の機能であり、「例外処理」とは異なります。たとえば例外処理ならC++から「try
、catch
」で捕捉できますが、構造化例外処理はVC++では「__try
、__except
、__finally
」というキーワードを用います。
必要がなければ、標準の例外処理を用います。ただし/clrでコンパイルするときには、構造化例外処理が必須となります。
属性 | 意味 |
---|---|
a | C++例外と構造化例外を捕捉 |
s | C++例外を捕捉し、extern "C"と宣言された関数は例外を投げるとコンパイラに指示 |
c | C++例外を捕捉し、extern "C"と宣言された関数は例外を投げないとコンパイラに指示 |
オプション | 属性 | 意味 |
---|---|---|
/EHa (/EHca) | a | C++例外処理を有効。構造化例外処理あり (/clrオプション指定時の既定値) |
/EHs | s | C++例外処理を有効。構造化例外処理なし |
/EHsc | sc | C++例外処理を有効 |