Freigeben über


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

CMemoryException-Klasse

Mit genügend Arbeitsspeicher

CFileException-Klasse

Dateiausnahme

CArchiveException-Klasse

Archiv-/Serialisierungsausnahme

CNotSupportedException-Klasse

Antwort an Anforderungen um nicht unterstützten Dienst

CResourceException-Klasse

Windows-Ressourcenzuordnungsausnahme

CDaoException-Klasse

Datenbankausnahmen (DAO-Klassen)

CDBException-Klasse

ODBC-Klassen Datenbankausnahmen()

COleException-Klasse

OLE-Ausnahmen

COleDispatchException-Klasse

Ausnahmen des gibt (Automatisierung)

CUserException-Klasse

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

C++-Ausnahmebehandlung

Weitere Ressourcen

Wie behebe ich: Erstellen Sie die My eigenen benutzerdefinierten Ausnahme-Klassen?