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