SetUnhandledExceptionFilter 例外ハンドラの置換

Cの宣言:

LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(
	LPTOPLEVEL_EXCEPTION_FILTER ExceptionFilter);

説明:

呼び出し元スレッドのトップレベルの例外ハンドラを置き換える。この関数の実行以後に作成されるスレッドにも適用される。

引数の意味は、以下の通り。
ExceptionFilter 置き換える例外ハンドラ関数のポインタ。

戻り値は、置き換え前のトップレベル例外ハンドラのポインタである。

Cのサンプル:

通常アプリケーションエラーとなるコードを、メインの処理で実行する。SetUnhandledExceptionFilter関数によってトップレベルの例外ハンドラを置き換えることにより、独自の例外発生時処理を実行する。
/* 例外ハンドラ */
LONG CALLBACK ExceptionFilter(EXCEPTION_POINTERS *ExceptionInfo)
{
	FatalAppExit(0, "アプリケーションエラー発生");
	return(EXCEPTION_EXECUTE_HANDLER);
}
							 
/* メインの処理 */
void DoException()
{
	/* 例外ハンドラの置き換え */
	SetUnhandledExceptionFilter(ExceptionFilter);


	/* 例外が発生するコード */
	*(int *)NULL = 0;
}


(original text:1998/12/25 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。