構造化例外の定義(C++)
Win32 の構造化例外(C++) への移動
Win32 例外を発生させてそれを同じプログラム内で処理することは、通常、あまり意味がありません。C++ 例外を使った方が、処理がうまくでき、移植性はずっと高く、構文も単純になります。ただし、Win32 例外には、同じ C++ コンパイラでコンパイルされたのでないコンポーネントで処理できるという利点があります。
まず、例外を定義します。例外とは、以下の形式の 32 ビット整数です(ビット 0 から始まります)。
ビット | 意味 |
31-30 | 11 = エラー(通常) 00 = 成功 01 = 情報 10 = 警告 |
29 | 1 = ユーザー定義 |
28 | 予約済み |
27-0 | ユーザー定義 |
例外コードを定義する他に、例外にその他の情報(例外レコードからフィルタ/ハンドラがアクセス可能なもの)を追加するかどうかを決定する必要があります。例外コードで追加のパラメータをエンコードするための慣習的な方法はありません。