Ausnahmebehandlung in MSVC

Eine Ausnahme ist ein Fehlerzustand, möglicherweise außerhalb der Steuerung des Programms, der verhindert, dass das Programm entlang des regulären Ausführungspfads fortgesetzt wird. Bestimmte Vorgänge, einschließlich Objekterstellung, Dateieingabe/Ausgabe und Funktionsaufrufe aus anderen Modulen, sind alle potenziellen Ausnahmenquellen, auch wenn Ihr Programm ordnungsgemäß ausgeführt wird. Stabiler Code antizipiert und behandelt Ausnahmen. Verwenden Sie zum Erkennen von Logikfehlern Assertionen anstelle von Ausnahmen (siehe Verwenden von Assertionen).

Arten von Ausnahmen

Der Microsoft C++-Compiler (MSVC) unterstützt drei Arten von Ausnahmebehandlung:

  • C++-Ausnahmebehandlung

    Für die meisten C++-Programme sollten Sie die C++-Ausnahmebehandlung verwenden. Es ist typsicher und stellt sicher, dass Objektdestruktoren während der Stapelaussetzung aufgerufen werden.

  • Strukturierte Ausnahmebehandlung

    Windows stellt einen eigenen Ausnahmemechanismus zur Hand, der als strukturierte Ausnahmebehandlung (SEH) bezeichnet wird. Es wird nicht für die C++- oder MFC-Programmierung empfohlen. Verwenden Sie SEH nur in Nicht-MFC C-Programmen.

  • MFC-Ausnahmen

    Seit Version 3.0 verwendet MFC C++-Ausnahmen. Es unterstützt weiterhin die älteren Makros für die Ausnahmebehandlung, die C++-Ausnahmen in Form ähneln. Hinweise zum Mischen von MFC-Makros und C++-Ausnahmen finden Sie unter Ausnahmen: Verwenden von MFC-Makros und C++-Ausnahmen.

Verwenden Sie eine /EH-Compileroption , um das Ausnahmebehandlungsmodell anzugeben, das in einem C++-Projekt verwendet werden soll. Standard C++-Ausnahmebehandlung (/EHsc) ist die Standardeinstellung in neuen C++-Projekten in Visual Studio.

Es wird nicht empfohlen, die Ausnahmebehandlungsmechanismen zu kombinieren. Verwenden Sie z. B. keine C++-Ausnahmen mit strukturierter Ausnahmebehandlung. Die Verwendung der C++-Ausnahmebehandlung macht ihren Code portierbarer und ermöglicht es Ihnen, Ausnahmen eines beliebigen Typs zu behandeln. Weitere Informationen zu den Nachteilen der strukturierten Ausnahmebehandlung finden Sie unter Strukturierte Ausnahmebehandlung.

In diesem Abschnitt

Siehe auch

C++-Sprachreferenz
x64- Ausnahmebehandlung
für die Ausnahmebehandlung (C++/CLI und C++/CX)