GetExceptionCode-Makro

Ruft einen Code ab, der den Typ der auftretenden Ausnahme identifiziert. Die Funktion kann nur innerhalb des Filterausdrucks oder Ausnahmehandlerblocks eines Ausnahmehandlers aufgerufen werden.

Hinweis

Der Microsoft C/C++-Optimierungscompiler interpretiert diese Funktion als Schlüsselwort, und seine Verwendung außerhalb der entsprechenden Ausnahmebehandlungssyntax generiert einen Compilerfehler.

Syntax

DWORD GetExceptionCode(void);

Parameter

Dieses Makro verfügt über keine Parameter.

Rückgabewert

Der Rückgabewert identifiziert den Typ der Ausnahme. In der folgenden Tabelle sind die Ausnahmecodes aufgeführt, die aufgrund häufiger Programmierfehler auftreten können. Diese Werte werden in WinBase.h und WinNT.h definiert.

Rückgabecode Beschreibung
_ _ AUSNAHMEZUGRIFFSVERLETZUNG
Der Thread versucht, aus einer virtuellen Adresse zu lesen oder in eine virtuelle Adresse zu schreiben, auf die er keinen Zugriff hat.
Dieser Wert ist als STATUS _ ACCESS _ VIOLATION definiert.
GRENZEN DES _ _ _ AUSNAHMEARRAYS ÜBERSCHRITTEN
Der Thread versucht, auf ein Arrayelement zuzugreifen, das außerhalb der Grenzen liegt, und die zugrunde liegende Hardware unterstützt die Begrenzungsprüfung.
Dieser Wert ist als STATUS _ ARRAY _ BOUNDS _ EXCEEDED definiert.
EXCEPTION _ BREAKPOINT
Ein Haltepunkt wird gefunden.
Dieser Wert ist als STATUS _ BREAKPOINT definiert.
_ _ AUSNAHMEDATENTYP– FEHLAUSRICHTUNG
Der Thread versucht, Daten zu lesen oder zu schreiben, die auf Hardware falsch ausgerichtet sind, die keine Ausrichtung bereitstellt. Beispielsweise müssen 16-Bit-Werte an 2-Byte-Grenzen, 32-Bit-Werte an 4-Byte-Grenzen usw. ausgerichtet werden.
Dieser Wert ist als STATUS _ DATATYPE _ MISALIGNMENT definiert.
EXCEPTION _ FLT _ DENORMAL _ OPERAND
Einer der Operanden in einem Gleitkommavorgang ist denormal. Ein Denormalwert ist zu klein, um als Standard-Gleitkommawert dargestellt zu werden.
Dieser Wert ist als STATUS _ FLOAT _ DENORMAL _ OPERAND definiert.
EXCEPTION _ FLT _ DIVIDE _ BY _ ZERO
Der Thread versucht, einen Gleitkommawert durch einen Gleitkommateiler von 0 (null) zu dividieren.
Dieser Wert ist als STATUS _ FLOAT DIVIDE BY ZERO _ _ _ definiert.
AUSNAHME _ FLT _ INEXACT-ERGEBNIS _
Das Ergebnis einer Gleitkommaoperation kann nicht genau als Dezimalbruch dargestellt werden.
Dieser Wert ist als STATUS _ FLOAT _ INEXACT _ RESULT definiert.
EXCEPTION _ FLT _ INVALID _ OPERATION
Eine Gleitkommaausnahme, die nicht in dieser Liste enthalten ist.
Dieser Wert ist als STATUS _ FLOAT _ INVALID OPERATION _ definiert.
EXCEPTION _ FLT _ OVERFLOW
Der Exponent eines Gleitkommavorgangs ist größer als die Größe, die vom entsprechenden Typ zulässig ist.
Dieser Wert ist als STATUS _ FLOAT _ OVERFLOW definiert.
AUSNAHME _ FLT _ STACK _ CHECK
Der Stapel ist aufgrund eines Gleitkommavorgangs über- oder unterlaufen.
Dieser Wert ist als STATUS _ FLOAT _ STACK CHECK _ definiert.
EXCEPTION _ FLT _ UNDERFLOW
Der Exponent eines Gleitkommavorgangs ist kleiner als die Vom entsprechenden Typ zulässige Größe.
Dieser Wert ist als STATUS _ FLOAT _ UNDERFLOW definiert.
SEITE "EXCEPTION _ _ GUARD"
Der Thread, auf den mit dem PAGE GUARD-Modifizierer belegter Arbeitsspeicher zugegriffen _ wurde.
Dieser Wert ist als STATUS _ GUARD _ PAGE VIOLATION _ definiert.
AUSNAHME _ _ UNGÜLTIGE ANWEISUNG
Der Thread versucht, eine ungültige Anweisung auszuführen.
Dieser Wert ist als STATUS _ ILLEGAL _ INSTRUCTION definiert.
AUSNAHME _ IM _ _ SEITENFEHLER
Der Thread versucht, auf eine Seite zuzugreifen, die nicht vorhanden ist, und das System kann die Seite nicht laden. Diese Ausnahme kann beispielsweise auftreten, wenn beim Ausführen eines Programms über ein Netzwerk eine Netzwerkverbindung unterbrochen wird.
Dieser Wert ist als STATUS _ IN _ PAGE ERROR _ definiert.
EXCEPTION _ INT _ DIVIDE _ BY _ ZERO
Der Thread versucht, einen ganzzahligen Wert durch einen ganzzahligen Divisor von 0 (null) zu dividieren.
Dieser Wert ist als STATUS _ INTEGER DIVIDE BY ZERO _ _ _ definiert.
EXCEPTION _ INT _ OVERFLOW
Das Ergebnis einer ganzzahligen Operation erstellt einen Wert, der zu groß ist, um vom Zielregister gehalten zu werden. In einigen Fällen führt dies dazu, dass das wichtigste Teil des Ergebnisses ausgeführt wird. Bei einigen Vorgängen wird das Carry-Flag nicht festgelegt.
Dieser Wert ist als STATUS _ INTEGER _ OVERFLOW definiert.
AUSNAHME _ _ UNGÜLTIGE DISPOSITION
Ein Ausnahmehandler gibt eine ungültige Disposition an den Ausnahme dispatcher zurück. Programmierer, die eine high-level-Sprache wie C verwenden, sollten diese Ausnahme nie stoßen.
Dieser Wert ist als STATUS _ INVALID _ DISPOSITION definiert.
AUSNAHME _ UNGÜLTIGES _ HANDLE
Der Thread hat ein Handle für ein ungültiges Kernelobjekt verwendet (wahrscheinlich, weil es geschlossen wurde).
Dieser Wert ist als STATUS _ INVALID _ HANDLE definiert.
EXCEPTION _ NONCONTINUABLE _ EXCEPTION
Der Thread versucht, die Ausführung fortzusetzen, nachdem eine nicht zusammenhängende Ausnahme aufgetreten ist.
Dieser Wert ist als STATUS _ NONCONTINUABLE _ EXCEPTION definiert.
EXCEPTION _ _ PRIV-ANWEISUNG
Der Thread versucht, eine Anweisung mit einem Vorgang auszuführen, der im aktuellen Computermodus nicht zulässig ist.
Dieser Wert ist als STATUS _ PRIVILEGED _ INSTRUCTION definiert.
AUSNAHME _ – _ EINZELSCHRITT
Ein Ablaufverfolgungsfalle oder ein anderer einzelner Anweisungsmechanismus signalisiert, dass eine Anweisung ausgeführt wird.
Dieser Wert ist als STATUS _ SINGLE _ STEP definiert.
_ _ AUSNAHMESTAPELÜBERLAUF
Der Thread verwendet seinen Stapel.
Dieser Wert ist als STATUS _ STACK _ OVERFLOW definiert.
_ _ STATUSENTLADUNG KONSOLIDIEREN
Eine Rahmenkonsolidierung wurde ausgeführt.

Bemerkungen

Die GetExceptionCode-Funktion kann nur innerhalb des Filterausdrucks oder Ausnahmehandlerblocks eines Ausnahmehandlers aufgerufen werden. Der Filterausdruck wird ausgewertet, wenn während der Ausführung des _ _ try-Blocks eine Ausnahme auftritt, und bestimmt, ob der _ _ ausnahme-Block ausgeführt wird.

Der Filterausdruck kann eine Filterfunktion aufrufen. Die Filterfunktion kann GetExceptionCode nicht aufrufen. Der Rückgabewert von GetExceptionCode kann jedoch als Parameter an eine Filterfunktion übergeben werden. Der Rückgabewert der GetExceptionInformation-Funktion kann auch als Parameter an eine Filterfunktion übergeben werden. GetExceptionInformation gibt einen Zeiger auf eine -Struktur zurück, die die Ausnahmecodeinformationen enthält.

Wenn geschachtelte Handler vorhanden sind, wird jeder Filterausdruck ausgewertet, bis einer als EXCEPTION EXECUTE HANDLER oder EXCEPTION CONTINUE EXECUTION ausgewertet _ _ _ _ wird. Jeder Filterausdruck kann GetExceptionCode aufrufen, um den Ausnahmecode abzurufen.

Der zurückgegebene Ausnahmecode ist der durch eine Hardwareausnahme generierte Code oder der code, der in der RaiseException-Funktion für eine softwaregenerierte Ausnahme angegeben ist.

Beim Behandeln der Breakpointausnahme ist es wichtig, den Anweisungszeiger im Kontextdatensatz zu erhöhen, um mit dieser Ausnahme fortzufahren.

Beispiele

Ein Beispiel finden Sie unter Verwenden eines Ausnahmehandlers.

Requirements (Anforderungen)

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows Nur [ XP-Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows Nur Server [ 2003-Desktop-Apps]

Weitere Informationen

GetExceptionInformation

Raiseexception

Strukturierte Funktionen zur Ausnahmebehandlung

Übersicht über die strukturierte Ausnahmebehandlung