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を超えてはなりません。 lpArgumentsNULL の場合、このパラメーターは無視されます。

[in] lpArguments

引数の配列。 このパラメーターは、NULL でもかまいません。 これらの引数には、例外ハンドラーのフィルター式に渡す必要があるアプリケーション定義データを含めることができます。

戻り値

この関数は値を返しません。

注釈

RaiseException 関数を使用すると、プロセスで構造化例外処理を使用して、ソフトウェアによって生成されたプライベートなアプリケーション定義の例外を処理できます。

例外を発生させると、例外ディスパッチャーは例外ハンドラーを次のように検索します。

  1. システムは、最初にプロセスのデバッガー (存在する場合) に通知しようとします。
  2. プロセスがデバッグ中ではない場合、または関連付けられているデバッガーによって例外が処理されない場合、システムでは、例外が発生したスレッドのスタック フレームを検索して、フレームベースの例外ハンドラーを検索しようとします。 システムは、最初に現在のスタック フレームを検索し、その後、前のスタック フレームを後方に進みます。
  3. フレームベースのハンドラーが見つからない場合、またはフレームベースのハンドラーが例外を処理しない場合、システムはプロセスのデバッガーに通知する 2 回目の試行を行います。
  4. プロセスがデバッグ中ではない場合、または関連付けられているデバッガーで例外が処理されない場合、システムでは例外の種類に基づいて既定の処理を行います。 ほとんどの例外で、既定のアクションは ExitProcess 関数を呼び出すことです。

dwExceptionCodedwExceptionFlagsnNumberOfArguments、および lpArguments パラメーターで指定された値は、GetExceptionInformation 関数を呼び出すことによって、フレームベースの例外ハンドラーのフィルター式で取得できます。 デバッガーは、 WaitForDebugEvent 関数を呼び出すことによって、これらの値を取得できます。

例については、「例外ハンドラーの使用」を参照してください。

要件

   
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー errhandlingapi.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

ExitProcess

GetExceptionCode

GetExceptionInformation

構造化例外処理関数

構造化例外処理の概要

WaitForDebugEvent

VBS エンクレーブで使用できる Vertdll API