次の方法で共有


<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」を参照してください。