Strukturierte Exceptions unter Win32 (C++)
Nach oben zu Exception-Behandlung in C++Builder
Win32 unterstützt die C-basierte strukturierte Exception-Behandlung (Structured Exception Handling, SEH), die der Standard-C++-Exception-Behandlung ähnelt. Es gibt jedoch einige wesentliche Unterschiede, die genau beachtet werden müssen, wenn sie zusammen mit Exception-sensitivem C++-Code verwendet werden.
Beachten Sie bei der Verwendung der strukturierten Exception-Behandlung in C++Builder-Anwendungen Folgendes:
- Strukturierte C-Exceptions können in C++-Programmen verwendet werden.
- C++-Exceptions können nicht in C-Programmen verwendet werden, weil C++-Exceptions das Schlüsselwort catch erfordern, das in C-Programmen nicht zulässig ist.
- Eine durch einen Aufruf der Funktion RaiseException erzeugte Exception wird von einem
try
/__except
-Block (C++) oder einem__try
/__except
-Block (C) behandelt. (Sie können auchtry
/__finally
- oder__try
/__finally
-Blöcke verwenden.) Siehe Syntax von strukturierten Exceptions (C++). Alle Behandlungsroutinen vontry
/catch
-Blöcken werden ignoriert, wenn RaiseException aufgerufen wird. - Exceptions, die nicht von der Anwendung behandelt werden, führen nicht zum Aufruf von terminate, sondern werden statt dessen an das Betriebssystem übergeben (in Allgemeinen ist das Endergebnis die Beendigung des Prozesses).
- Exception-Behandlungsroutinen erhalten nur auf Anforderung eine Kopie des Exception-Objekts.
Sie können die folgenden Hilfsfunktionen für C-Exceptions in C- oder C++-Programmen verwenden:
C++Builder schränkt die Verwendung der Funktion UnhandledExceptionFilter für den except-Filter von __try
/__except
- oder try
/__except
-Blöcken nicht ein. Das Verhalten des Programms ist jedoch nicht definiert, wenn die Funktion außerhalb eines __try
/__except
- oder try
/__except
-Blocks aufgerufen wird.
Themen
- Syntax von strukturierten Exceptions (C++)
- Behandeln von strukturierten Exceptions (C++)
- Filtern von strukturierten Exceptions (C++)
- Verwenden von Standard-Exceptions mit strukturierten Exceptions (C++)
- Definieren von strukturierten Exceptions (C++)
- Auslösen von strukturierten Exceptions (C++)
- SEH-Beendigungsblöcke (C++)
- C++Builder-Compiler-Optionen für die Exception-Behandlung