RaiseException-Funktion (errhandlingapi.h)

Löst eine Ausnahme im aufrufenden Thread aus.

Syntax

void RaiseException(
  [in] DWORD           dwExceptionCode,
  [in] DWORD           dwExceptionFlags,
  [in] DWORD           nNumberOfArguments,
  [in] const ULONG_PTR *lpArguments
);

Parameter

[in] dwExceptionCode

Ein anwendungsdefinierter Ausnahmecode der ausgelösten Ausnahme. Der Filterausdruck und der Ausnahmehandlerblock eines Ausnahmehandlers können die GetExceptionCode-Funktion verwenden, um diesen Wert abzurufen.

Beachten Sie, dass das System Bit 28 von dwExceptionCode löscht, bevor eine Meldung angezeigt wird. Dieses Bit ist ein reserviertes Ausnahmebit, das vom System für eigene Zwecke verwendet wird.

[in] dwExceptionFlags

Die Ausnahmeflags. Dies kann entweder null sein, um eine fortlaufende Ausnahme anzugeben, oder EXCEPTION_NONCONTINUABLE, um eine nicht zusammenhängende Ausnahme anzugeben. Jeder Versuch, die Ausführung nach einer nicht zusammenhängenden Ausnahme fortzusetzen, verursacht die EXCEPTION_NONCONTINUABLE_EXCEPTION Ausnahme.

[in] nNumberOfArguments

Die Anzahl der Argumente im lpArguments-Array . Dieser Wert darf EXCEPTION_MAXIMUM_PARAMETERS nicht überschreiten. Dieser Parameter wird ignoriert, wenn lpArgumentsNULL ist.

[in] lpArguments

Ein Array aus Argumenten. Dieser Parameter kann NULL sein. Diese Argumente können alle anwendungsdefinierten Daten enthalten, die an den Filterausdruck des Ausnahmehandlers übergeben werden müssen.

Rückgabewert

Diese Funktion gibt keinen Wert zurück.

Bemerkungen

Die RaiseException-Funktion ermöglicht es einem Prozess, die strukturierte Ausnahmebehandlung zu verwenden, um private, softwaregenerierte, anwendungsdefinierte Ausnahmen zu behandeln.

Das Auslösen einer Ausnahme bewirkt, dass der Ausnahmeverteiler die folgende Suche nach einem Ausnahmehandler durchläuft:

  1. Das System versucht zunächst, den Debugger des Prozesses zu benachrichtigen, falls vorhanden.
  2. Wenn der Prozess nicht gedebuggt wird oder der zugeordnete Debugger die Ausnahme nicht behandelt, versucht das System, einen rahmenbasierten Ausnahmehandler zu finden, indem es die Stapelrahmen des Threads durchsucht, in dem die Ausnahme aufgetreten ist. Das System durchsucht zuerst den aktuellen Stapelrahmen und fährt dann rückwärts durch vorangehende Stapelframes.
  3. Wenn kein framebasierter Handler gefunden werden kann oder kein framebasierter Handler die Ausnahme behandelt, unternimmt das System einen zweiten Versuch, den Debugger des Prozesses zu benachrichtigen.
  4. Wenn der Prozess nicht gedebuggt wird oder der zugeordnete Debugger die Ausnahme nicht behandelt, stellt das System die Standardbehandlung basierend auf dem Ausnahmetyp bereit. Bei den meisten Ausnahmen ist die Standardaktion das Aufrufen der ExitProcess-Funktion.

Die in den Parametern dwExceptionCode, dwExceptionFlags, nNumberOfArguments und lpArguments angegebenen Werte können im Filterausdruck eines framebasierten Ausnahmehandlers abgerufen werden, indem die GetExceptionInformation-Funktion aufgerufen wird. Ein Debugger kann diese Werte durch Aufrufen der WaitForDebugEvent-Funktion abrufen.

Beispiele

Ein Beispiel finden Sie unter Verwenden eines Ausnahmehandlers.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile errhandlingapi.h (Windows.h einschließen)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

ExitProcess

GetExceptionCode

GetExceptionInformation

Funktionen der strukturierten Ausnahmebehandlung

Übersicht über die strukturierte Ausnahmebehandlung

WaitForDebugEvent

In VBS-Enclaves verfügbare Vertdll-APIs