RaiseException 関数 (errhandlingapi.h)
呼び出し元のスレッドで例外を発生させます。
構文
void RaiseException(
[in] DWORD dwExceptionCode,
[in] DWORD dwExceptionFlags,
[in] DWORD nNumberOfArguments,
[in] const ULONG_PTR *lpArguments
);
パラメーター
[in] dwExceptionCode
発生している例外のアプリケーション定義例外コード。 例外ハンドラーのフィルター式と例外ハンドラー ブロックは 、GetExceptionCode 関数を使用してこの値を取得できます。
システムは、メッセージを表示する前に dwExceptionCode のビット 28 をクリアすることに注意してください。このビットは予約済みの例外ビットであり、システムが独自の目的で使用します。
[in] dwExceptionFlags
例外フラグ。 これは、継続可能な例外を示す場合は 0、非継続可能な例外を示す場合はEXCEPTION_NONCONTINUABLEのいずれかです。 続行できない例外の後に実行を続行しようとすると、EXCEPTION_NONCONTINUABLE_EXCEPTION例外が発生します。
[in] nNumberOfArguments
lpArguments 配列内の引数の数。 この値は、EXCEPTION_MAXIMUM_PARAMETERSを超えてはなりません。 lpArguments が NULL の場合、このパラメーターは無視されます。
[in] lpArguments
引数の配列。 このパラメーターは、NULL でもかまいません。 これらの引数には、例外ハンドラーのフィルター式に渡す必要があるアプリケーション定義データを含めることができます。
戻り値
この関数は値を返しません。
注釈
RaiseException 関数を使用すると、プロセスで構造化例外処理を使用して、ソフトウェアによって生成されたプライベートなアプリケーション定義の例外を処理できます。
例外を発生させると、例外ディスパッチャーは例外ハンドラーを次のように検索します。
- システムは、最初にプロセスのデバッガー (存在する場合) に通知しようとします。
- プロセスがデバッグ中ではない場合、または関連付けられているデバッガーによって例外が処理されない場合、システムでは、例外が発生したスレッドのスタック フレームを検索して、フレームベースの例外ハンドラーを検索しようとします。 システムは、最初に現在のスタック フレームを検索し、その後、前のスタック フレームを後方に進みます。
- フレームベースのハンドラーが見つからない場合、またはフレームベースのハンドラーが例外を処理しない場合、システムはプロセスのデバッガーに通知する 2 回目の試行を行います。
- プロセスがデバッグ中ではない場合、または関連付けられているデバッガーで例外が処理されない場合、システムでは例外の種類に基づいて既定の処理を行います。 ほとんどの例外で、既定のアクションは ExitProcess 関数を呼び出すことです。
dwExceptionCode、dwExceptionFlags、nNumberOfArguments、および lpArguments パラメーターで指定された値は、GetExceptionInformation 関数を呼び出すことによって、フレームベースの例外ハンドラーのフィルター式で取得できます。 デバッガーは、 WaitForDebugEvent 関数を呼び出すことによって、これらの値を取得できます。
例
例については、「例外ハンドラーの使用」を参照してください。
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | errhandlingapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |