次の方法で共有


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 )( );

既定では unexpectedterminateを呼び出します。 この既定の設定を変更するには、独自の終了関数を作成し、その関数の名前を引数として 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