Strukturierte Exceptions unter Win32 (C++)

Aus RAD Studio
Wechseln zu: Navigation, Suche

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 auch try/__finally- oder __try/__finally-Blöcke verwenden.) Siehe Syntax von strukturierten Exceptions (C++). Alle Behandlungsroutinen von try/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

Siehe auch