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 Quellen von Ausnahmen, auch wenn Ihr Programm ordnungsgemäß ausgeführt wird. Stabiler Code antizipiert und behandelt Ausnahmen. Um Logikfehler zu erkennen, verwenden Sie Dies anstelle von Ausnahmen (siehe Verwenden von Assertionen).
Arten von Ausnahmen
Der Microsoft C++-Compiler (MSVC) unterstützt drei Arten von Ausnahmebehandlung:
-
Für die meisten C++-Programme sollten Sie die C++-Ausnahmebehandlung verwenden. Es ist typsicher und stellt sicher, dass Objektdestruktoren während des Stapels abwickeln aufgerufen werden.
Strukturierte Behandlung von Ausnahmen
Windows stellt einen eigenen Ausnahmemechanismus zur Verfügung, der als strukturierte Ausnahmebehandlung (SEH) bezeichnet wird. Es wird nicht für die C++- oder MFC-Programmierung empfohlen. Verwenden Sie SEH nur in MFC-fremden C-Programmen.
-
Seit Version 3.0 hat MFC C++-Ausnahmen verwendet. Sie unterstützt weiterhin die ältere Ausnahmebehandlung von Makros, die C++-Ausnahmen in Form ähneln. Informationen 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. Die 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 ausschließlich tragbarer 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
Moderne C++-bewährte Methoden für Ausnahmen und Fehlerbehandlung
Verbinden von Code, der Ausnahmen zulässt, mit Code ohne Ausnahmen
Weitere Informationen
C++-Sprachreferenz
x64-AusnahmebehandlungAusnahmebehandlung (C++/CLI und C++/CX)