set_unexpected
(CRT)
unexpected
.によって呼び出される独自の終了関数をインストールします。
構文
unexpected_function set_unexpected( unexpected_function unexpFunction );
パラメーター
unexpFunction
unexpected
関数を置き換えるために作成する関数へのポインター。
戻り値
_set_unexpected
によって登録された前の終了関数へのポインターを返し、前の関数を後で復元できるようにします。 前の関数が設定されていない場合は、この戻り値を使用して既定の動作を復元できます。この値は NULL
である場合があります。
解説
set_unexpected
関数は unexpected
によって呼び出される関数として unexpFunction
をインストールします。 unexpected
は、現在の C++ 例外処理実装では使用されません。 unexpected_function
型は EH.H に、ユーザー定義の予期しない関数、つまり void
を返す unexpFunction
へのポインターとして定義されます。 カスタム unexpFunction
関数は、呼び出し元に戻すことはできません。
typedef void ( *unexpected_function )( );
既定では unexpected
は terminate
を呼び出します。 この既定の設定を変更するには、独自の終了関数を作成し、その関数の名前を引数として set_unexpected
を呼び出します。 unexpected
は、set_unexpected
への引数として渡された最後の関数を呼び出します。
set_terminate
への呼び出しによってインストールされたカスタムの終了関数とは異なり、例外は unexpFunction
内からスローすることができます。
マルチ スレッド環境では、予期しない関数はスレッドごとに別々に管理されます。 新しいスレッドは各々、それぞれの予期しない関数をインストールする必要があります。 したがって、各スレッドがそれぞれの予期しない処理を担当します。
C++ 例外処理の Microsoft での現在の実装では、unexpected
は既定で terminate
を呼び出し、例外処理のランタイム ライブラリによって呼び出されることはありません。 terminate
ではなく、unexpected
を呼び出すことに特に利点はありません。
動的にリンクされているすべての DLL または EXE に対して 1 つの set_unexpected
ハンドラーがあります。 set_unexpected
呼び出した場合でも、ハンドラーが別の DLL または EXE によって設定されたハンドラーに置き換えられる可能性があります。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
set_unexpected |
<eh.h> |
互換性の詳細については、「 Compatibility」を参照してください。
関連項目
例外処理ルーチン
abort
_get_unexpected
set_terminate
terminate
unexpected