Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Einige der Sourceschaltungen der Ausnahmen werden nicht als Fehler im Programm durch das System bezeichnet wird.Wenn Sie beispielsweise versuchen, einen Speicherblock belegen unzureichender Arbeitsspeicher, jedoch wird, löst die Laufzeit nicht API-Funktion oder eine Ausnahme aus, sondern gibt einen Fehlercode zurück.
Allerdings können Sie jede Bedingung als Ausnahme behandeln, dass die Bedingung im Code mit erkennen und melden sie, indem Sie die RaiseException-Funktion aufrufen.Indem Sie Fehler auf diese Weise mit einem Lesezeichen versehen, können Sie die Vorteile der strukturierten Ausnahmebehandlung in irgendeiner Weise Laufzeitfehler lassen.
Um die strukturierte Ausnahmebehandlung mit Fehlern verwenden:
Definieren Sie besitzen Ausnahmecode für das Ereignis.
Aufruf RaiseException , wenn Sie ein Problem feststellen.
Verwenden Sie ausnahmebehandlung filtert, das für den Ausnahmecode zu testen, die Sie definiert haben.
Die WINERROR.H-Datei wird das Format für Ausnahmecodes auf.Um sicherzustellen, dass Sie keinen Code definieren, der einem vorhandenen Ausnahmecode verursacht, legen Sie das dritte höchstwertige Byte auf 1 fest.Die vier höherwertigen Bytes sind die in der folgenden Tabelle dargestellt festgelegt werden.
Bits |
Empfohlene Einstellung binäre |
Beschreibung |
|---|---|---|
31-30 |
11 |
Diese zwei Bits beschreiben den grundlegenden Status des Codes: 11 = Fehler 00 = Erfolg, 01 = Information, 10 = warnend. |
29 |
1 |
Clientbit.Wird auf 1 für benutzerdefinierte Code. |
28 |
0 |
Reserviertes Bit.(Urlaub auf 0 festgelegt.) |
Sie können die ersten zwei Bits an einer Einstellung anders als binär 11 festlegen, wenn Sie möchten, dass, obwohl die „Fehler“ Die Einstellung für die meisten Ausnahmen angemessen ist.Die wichtige Aufgabe zu beachten ist, auf den die Bits 29 und 28 wie in der vorherigen Tabelle festzulegen.
Der resultierende Fehlercode sollte die höchste vier Bits Daher verfügen, die hexadezimalem E festgelegt werden.Definieren Sie beispielsweise die folgenden Definitionen Ausnahmecodes, die nicht mit einem Fenster ausnahme Code verursachen.(Sie müssen jedoch sicherstellen, welche Code aus dem Drittanbieter DLL verwendet werden).
#define STATUS_INSUFFICIENT_MEM 0xE0000001
#define STATUS_FILE_BAD_FORMAT 0xE0000002
Nachdem Sie einen Ausnahmecode definiert haben, können Sie ihn verwenden, um eine Ausnahme auszulösen.Zum Beispiel verwendet der folgende Code die STATUS_INSUFFICIENT_MEM-Ausnahme als Reaktion auf ein Problem Familie aus:
lpstr = _malloc( nBufferSize );
if (lpstr == NULL)
RaiseException( STATUS_INSUFFICIENT_MEM, 0, 0, 0);
Wenn Sie einfach eine Ausnahme auslösen möchten, können Sie die letzten drei Parameter auf 0 festlegen.Die drei letzten Parameter sind zum Übergeben von zusätzlichen Informationen und das Festlegen eines Flags nützlich, die Handler beim Fortsetzen der Ausführung verhindert.Zeigen Sie die RaiseException-Funktion in Windows SDK .
In den Filtern können Sie für die Ausnahmebehandlung dann Code testen, die Sie definiert haben.Beispiele:
__try {
...
}
__except (GetExceptionCode() == STATUS_INSUFFICIENT_MEM ||
GetExceptionCode() == STATUS_FILE_BAD_FORMAT )