構造化例外処理は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++例外処理を有効 |