Ausnahmebehandlung in Visual C++
Eine Ausnahme ist ein Fehlerzustand, möglicherweise außerhalb des Steuerelements des Programms, das das Programm am Fortsetzen auf seinem normalen Ausführungspfad verhindert.Bestimmte Vorgänge, z. B. die Objekterstellung eingabe/ausgabe Datei, und die Funktion, die von anderen Modulen durchgeführt werden, sind alle Quellen von Ausnahmen, auch wenn das Programm ordnungsgemäß ausgeführt wird.Robuster Code nimmt vorweg und behandelte Ausnahmen.
Um logische Fehler in einem einzelnen Programms oder eines Moduls erkannt wird, sondern Ausnahmen Assertionen verwenden (siehe Verwenden von Assertionen).
Visual C++ unterstützt drei Arten von Exception Handling:
-
Für die meisten C++-Programme verwenden, sollten Sie beim Behandeln der C++-Ausnahmebehandlung ist typsicher und sichergestellt, dass während der Stapelentladung destruktoren Objekt aufgerufen werden.
Strukturierte Ausnahmebehandlung
Windows stellt sein eigener Ausnahme, die als Mechanismus für den SEH.Es wird nicht für C++ oder MFC-Programmierung empfohlen.Verwenden Sie SEH nur in MFC-fremde C-Programmen.
-
Da Version 3.0, verfügt aber C++-Ausnahmen MFC verwendet, die älteren Makros zur Ausnahmebehandlung unterstützt, die auf C++-Ausnahmen im Format ähnlich sind.Obwohl diese Makros nicht für neue Programmierung empfohlen werden, werden sie jedoch aus Gründen der Abwärtskompatibilität unterstützt.In Programmen, die bereits die Makros verwenden, können Sie auch C++-Ausnahmen gemeinsam verwenden.Während des Präprozessorlaufs werten die Makros auf die Ausnahmebehandlung Leerzeichen getrennten Schlüsselwörtern aus, die in der Visual C++-Implementierung der Programmiersprache C++ ab Visual C++, Version 2.0 definiert werden.Sie können vorhandene Ausnahme von Makros gesorgt haben, während Sie C++-Ausnahmen zu verwenden.
Verwenden Sie die /EH-Compileroption den Typ der Ausnahmebehandlung an, die in einem Projekt zu verwenden. Die C++-Ausnahmebehandlung ist die Standardeinstellung.Kombinieren Sie nicht die Mechanismen zur Fehlerbehandlung. Verwenden Sie z. B. nicht mit C++-Ausnahmen IHR.Weitere Hinweise zum Kombinieren von MFC-Makros und von C++-Ausnahmen finden Sie unter Ausnahmen: Verwenden von MFC-Makros und C++-Ausnahmen.
Weitere Informationen über die Behandlung von Ausnahmen in CLR-Anwendungen finden Sie unter Ausnahmebehandlung unter /clr (nur auf Englisch verfügbar).
Weitere Informationen zur Ausnahmebehandlung in x64-Prozessoren finden Sie unter Exception Handling (x64).