<exception>
typedefs
exception_ptr
例外へのポインターを表す型。
typedef unspecified exception_ptr;
解説
exception_ptr
型を実装するために使用される未指定の内部クラス。
現在の例外またはユーザーが指定した例外のインスタンスを参照するには、exception_ptr
オブジェクトを使用します。 Microsoft の実装では、例外は EXCEPTION_RECORD 構造体によって表されます。 各 exception_ptr
オブジェクトには、例外を表す EXCEPTION_RECORD
構造体のコピーを指す例外参照フィールドが含まれています。
exception_ptr
変数を宣言する場合、変数は例外に関連付けられません。 つまり、例外参照フィールドが NULL です。 このような exception_ptr
オブジェクトは、null exception_ptr と呼ばれます。
例外を current_exception
オブジェクトに割り当てるには、make_exception_ptr
または exception_ptr
関数を使用します。 exception_ptr
変数に例外を割り当てた場合、変数の例外参照フィールドは例外のコピーを指します。 例外をコピーするためのメモリが不足している場合、例外参照フィールドは、std::bad_alloc 例外のコピーを指し示します。 current_exception
関数または make_exception_ptr
関数が他の理由で例外をでコピーできない場合、この関数は、現在のプロセスを終了する terminate
CRT 関数を呼び出します。
名前とは異なり、exception_ptr
オブジェクト自体はポインターではありません。 ポインターのセマンティクスに従わず、ポインターのメンバー アクセス (->
) 演算子または間接 (*) 演算子で使用することはできません。 exception_ptr
オブジェクトには、パブリック データ メンバーまたはメンバー関数がありません。
比較:
等値演算子 (==
) と不等値演算子 (!=
) を使用して、2 種類の exception_ptr
オブジェクトを比較できます。 演算子は、例外を表す EXCEPTION_RECORD
構造体のバイナリ値 (ビット パターン) は比較しません。 代わりに、演算子は exception_ptr
オブジェクトの例外参照フィールドのアドレスを比較します。 その結果、null exception_ptr
と NULL 値を比較すると、等しいと評価されます。
terminate_handler
この型は、terminate_handler
として使用するのに適した関数へのポインターを表します。
typedef void (*terminate_handler)();
解説
この型は、終了ハンドラーとして使用するのに適した関数へのポインターを表します。
例
terminate_handler
の使用例については、「set_terminate」を参照してください。
unexpected_handler
この型は、unexpected_handler
として使用するのに適した関数へのポインターを表します。
typedef void (*unexpected_handler)();
例
unexpected_handler
の使用例については、「set_unexpected」を参照してください。