Ausnahmebehandlung in MFC
Dieser Artikel beschreibt die Ausnahmebehandlungsmechanismen, die in MFC verfügbar sind. Zwei Mechanismen sind verfügbar:
C++-Ausnahmen, verfügbar in MFC 3.0 und höher
Die MFC-Ausnahmemakros, das verfügbar in MFC-Versionen 1.0 und höher
Wenn Sie eine neue Anwendung mit MFC schreiben, sollten Sie den C++-Mechanismus verwenden. Sie können den Makro-basierten Mechanismus verwenden wenn die Verwendung der vorhandenen Anwendung bereits dieser Mechanismus umfassend.
Sie können vorhandenen Code bereit konvertieren, um C++-Ausnahmen anstelle der MFC-Ausnahmemakros zu verwenden. Vorteile des Konvertierens des Codes und Richtlinien hierfür werden im Artikel Ausnahmen: Umwandeln von MFC-Ausnahmemakros beschrieben.
Wenn Sie bereits eine Anwendung mit der MFC-Ausnahmemakros entwickelt haben, können Sie mithilfe dieser Makros im vorhandenen Code weiterhin, bei der Verwendung von C++-Ausnahmen in Ihrem neuen Code. Der Artikel Ausnahmen: Änderungen für Ausnahmemakros in Version 3.0 gibt Richtlinien hierfür.
Hinweis
So fügen Sie der C++-Ausnahmebehandlung zu aktivieren, die im Code verarbeitet, ausgewählt aktivieren C++-Ausnahmen auf der Codegenerierungsseite im Ordner C/C++ des Dialogfelds Eigenschaftenseiten (Visual C++) des Projekts oder verwenden die Compileroption /GX-.Der Standardwert ist /GX -, deaktiviert der Ausnahmebehandlung.
Dieser Artikel enthält die folgenden Themen:
Wann Ausnahmen verwendet
MFC-Ausnahmeunterstützung
Weiterführende Themen zu Ausnahmen
Wann Ausnahmen verwendet
Drei Kategorien Ergebnisse können auftreten, wenn eine Funktion während der Programmausführung aufgerufen wird: normale Ausführung, fehlerhafte Ausführung oder nicht die normale Ausführung. Jede Kategorie wird nachfolgend beschrieben.
Normale Ausführung
Die Funktion normalerweise ausführen und beendet werden. Einige Funktionen geben einem Ergebniscode zum Aufrufer zurück, der das Ergebnis der Funktion angibt. Die möglichen Ergebniscodes werden ausschließlich für die Fähigkeit definiert und den Bereich möglicher Ergebnissen der Funktion darstellen. Der Ergebniscode kann Erfolg oder Fehler angeben oder kann einem bestimmten Typ Fehler auch angeben, der innerhalb des Normbereichs die Erwartungen ist. Beispielsweise kann eine DateiStatusfunktion einem Code zurückgeben, der angibt, dass die Datei nicht vorhanden ist. Beachten Sie, dass der Begriff "Fehlercode" nicht verwendet wird, da ein Ergebniscode eines vieler erwarteten Ergebnisse darstellt.
Fehlerhafte Ausführung
Der Aufrufer ist, einen Fehler, wenn die Argumente der Funktion übergibt oder ruft die Funktion in einem ungeeigneten Kontext auf. Diese Situation verursacht einen Fehler, und sollte durch eine Assertion während der Programmentwicklung erkannt werden. (Weitere Informationen zu Assertionen, finden Sie unter C/C++-Assertionen.)
Nicht normale Ausführung
Nicht normale Ausführung enthält Situationen, in denen Anforderungen außerhalb des Steuerelements des Programms, wie Arbeitsspeicher oder niedriger E/A-Fehler, das Ergebnis der Funktion beeinträchtigen. Nicht normale Situationen sollten behandelt werden, indem Ausnahmen abfängt und ausgelöst.
Das Verwenden von Ausnahmen ist für normale Ausführung nicht besonders geeignet.
MFC-Ausnahme-Unterstützung
Ob Sie die C++-Ausnahmen direkt verwenden oder die MFC-Ausnahmemakros verwenden, verwenden Sie CException-Klasse oder CException abgeleitete Objekte, die durch das Framework oder von der Anwendung ausgelöst werden.
Die folgende Tabelle enthält die vordefinierten Ausnahmen an, die von MFC bereitgestellte werden.
Ausnahmeklasse |
Bedeutung |
---|---|
Mit genügend Arbeitsspeicher |
|
Dateiausnahme |
|
Archiv-/Serialisierungsausnahme |
|
Antwort an Anforderungen um nicht unterstützten Dienst |
|
Windows-Ressourcenzuordnungsausnahme |
|
Datenbankausnahmen (DAO-Klassen) |
|
ODBC-Klassen Datenbankausnahmen() |
|
OLE-Ausnahmen |
|
Ausnahmen des gibt (Automatisierung) |
|
Ausnahme, die den Benutzer mit einem Meldungsfeld werden, löst generisches CException-Klasse aus |
Hinweis
MFC unterstützt C++-Ausnahmen und die MFC-Ausnahmemakros.MFC nicht direkt unterstützt Handler (SEH) Windows NT-strukturierter Ausnahme, wie in Strukturierte Ausnahmebehandlung erläutert.
Weiterführende Themen zu Ausnahmen
Die folgenden Elemente beschreiben mit der MFC-Bibliothek für die Ausnahmeübergebung:
Die folgenden Elemente vergleichen die MFC-Ausnahmemakros mit den C++-Ausnahme-Schlüsselworten und beschreiben, wie Sie den Code anpassen können:
Siehe auch
Referenz
Weitere Ressourcen
Wie behebe ich: Erstellen Sie die My eigenen benutzerdefinierten Ausnahme-Klassen?