Anzeigen: Delphi
C++
Anzeigeeinstellungen
Behandeln von strukturierten Exceptions (C++)
Aus RAD Studio XE2
Nach oben zu Strukturierte Exceptions unter Win32 (C++)
Nach oben zu C++Builder-Entwicklerhandbuch
Strukturierte Exceptions können mit einer Erweiterung der C++-Exception-Behandlung behandelt werden:
try { foo(); } __except (__expr__) { // handler here }
__expr__ ist ein Ausdruck, der zu einem der drei Werte ausgewertet wird:
| Wert | Beschreibung |
|---|---|
| EXCEPTION_CONTINUE_SEARCH (0) | In die Behandlungsroutine wird nicht eingetreten, und das Betriebssystem sucht weiter nach einer Exception-Behandlungsroutine. |
| EXCEPTION_CONTINUE_EXECUTION (-1) | Mit der Ausführung ab der Exception fortsetzen. |
| EXCEPTION_EXECUTE_HANDLER (1) | In die Exception-Behandlungsroutine eintreten. Wenn der Code mit aktivierter Destruktor-Bereinigung (-xd, standardmäßig aktiviert) compiliert wurde, werden alle Destruktoren für lokale Objekte aufgerufen, die zwischen dem Auftreten der Exception und der Exception-Behandlungsroutine erstellt wurden, wenn der Stack abgewickelt wurde. Die Stack-Abwicklung wird vor dem Eintritt in die Behandlungsroutine ausgeführt.
|
#include <Windows.h> #include <excpt.h> int filter_func(EXCEPTION_POINTERS *); // ... EXCEPTION_POINTERS * xp = 0; try { foo(); } __except (filter_func(xp = GetExceptionInformation())) { // ... }
Wenn Sie den Kommaoperator für Zuweisungen in verschachtelten Funktionsaufrufen bevorzugen, hier das entsprechende Beispiel:
__except ((xp = GetExceptionInformation()), filter_func(xp))