Freigeben über


Ausnahmebehandlung in MFC

In diesem Artikel werden die Mechanismen zur Ausnahmebehandlung in MFC verfügbar sind.Zwei Mechanismen sind verfügbar:

  • C++-Ausnahmen, verfügbar in MFC-Version 3.0 und höher

  • Die MFC-Ausnahme Sie Makros verfügbar, das 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 Anwendung bereits vorhandene diesen Mechanismus in großem Umfang verwendet.

Sie können vorhandenen Code jetzt konvertieren, um anstelle von C++-Ausnahmen MFC-Ausnahme Makros zu verwenden.Vorteile der Konvertierung des Codes und Richtlinien hierfür sind im Artikel Ausnahmen: Konvertieren von den MFC-Ausnahme-Makros beschrieben.

Wenn Sie bereits eine Anwendung mithilfe der MFC-Ausnahme Makros entwickelt haben, können Sie mithilfe dieser Makros in dem vorhandenen Code weiterhin bei der Verwendung von C++-Ausnahmen im neuen Code.Der Artikel Ausnahmen: Änderungen an den Ausnahme-Makros in Version 3.0 gibt hierfür Guidelines.

HinweisHinweis

Um die C++-Ausnahmebehandlung zu aktivieren, die in Ihrem Code behandelt aktivieren, wählen Sie auf der Seite Codegenerierung C++-Ausnahmen im Ordner C/C++ des Eigenschaftenseiten (C++) Dialogfelds des Projekts oder verwenden Sie die /GX-.Die Standardeinstellung ist /GX, der Ausnahmebehandlung deaktiviert.

Dieser Artikel enthält die folgenden Themen:

  • Verwendungsmöglichkeiten von Ausnahmen verwendet

  • Unterstützung MFC-Ausnahme

  • Weiterführende Themen über Ausnahmen

Verwendungsmöglichkeiten von 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 ordnungsgemäßen Ausführung.Jede Kategorie wird im Folgenden beschrieben.

  • Normale Ausführung

    Die Funktion normalerweise ausführen und möglicherweise beendet wird.Einige Funktionen geben einen Ergebniscode zum Aufrufer zurück, der das Ergebnis der Funktion angibt.Die möglichen Ergebniscodes werden ausschließlich für die Funktion definiert und den Bereich der möglichen Ergebnisse der Funktion darstellen.Der Ergebniscode kann Erfolg oder Fehlschlagen angeben oder einen bestimmten Typ Fehler kann auch angegeben werden, der innerhalb des Normbereichs von Erwartungen entspricht.Beispielsweise kann eine FILE STATUS-Funktion den Code zurückgegeben, der angibt, dass die Datei nicht vorhanden ist.Beachten Sie, dass der Begriff "Fehlercode" nicht verwendet wird, da ein Ergebniscode zu vieler erwarteten Ergebnisse darstellt.

  • Fehlerhafte Ausführung

    Der Aufrufer kann jeden Fehler bei der Argumente an die Funktion übergeben wird oder ruft die Funktion in einem ungeeigneten Kontext an.Diese Situation verursacht einen Fehler, und es sollte durch eine Assertion während der Programmentwicklung erkannt werden.(Weitere Informationen zu Assertionen finden Sie unter Assertionen).

  • Nicht ordnungsgemäßen Ausführung

    Nicht ordnungsgemäßen Ausführung schließt Situationen, in denen die Bedingungen des Programms außerhalb des Steuerelements, z. B. niedriger Arbeitsspeicher oder E/A-Fehler, das Ergebnis der Funktion auswirken.Nicht normal Fällen sollten behandelt werden, indem Ausnahmen abfängt und ausgelöst.

Verwenden von Ausnahmen ist für nicht ordnungsgemäßen Ausführung besonders geeignet.

MFC-Ausnahme-Unterstützung

Unabhängig davon, ob Sie die C++-Ausnahmen direkt verwenden oder die MFC-Ausnahme Makros verwenden, verwenden Sie CException-Klasse oder CException abgeleitete Objekte, die vom Framework oder von der Anwendung ausgelöst werden.

In der folgenden Tabelle werden die vordefinierten Ausnahmen, die von MFC bereitgestellt werden.

Ausnahmeklasse

Bedeutung

CMemoryException-Klasse

Nicht genügend Arbeitsspeicher

CFileException-Klasse

Dateiausnahme

CArchiveException-Klasse

Archiv-/Serialisierung ausnahme

CNotSupportedException-Klasse

Antwort auf die Anforderung nicht unterstützten Dienst

CResourceException-Klasse

Windows-Ressourcenzuordnungsausnahme

CDaoException-Klasse

Ausnahmen Datenbank (DAO-Klassen)

CDBException-Klasse

Ausnahmen Datenbank (ODBC-Klassen)

COleException-Klasse

OLE-Ausnahmen

COleDispatchException-Klasse

Ausnahmen des Dispatchs (Automatisierung)

CUserException-Klasse

Ausnahme, die den Benutzer mit einem Meldungsfeld benachrichtigt, löst generisches CException-Klasse aus

HinweisHinweis

MFC unterstützt C++-Ausnahmen und die MFC-Ausnahme von Makros.MFC nicht direkt unterstützt Handler der Windows NT-strukturierten Ausnahme (SEH), wie in Strukturierte Ausnahmebehandlung erläutert.

Weiterführende Themen über Ausnahmen

Die folgenden Elemente beschreiben mit der MFC-Bibliothek für die Ausnahme übergebung:

Die folgenden Elemente vergleichen die MFC-Ausnahme mit den Makros und C++-Ausnahme-Schlüsselworten wird beschrieben, wie Sie den Code angepasst werden können:

Siehe auch

Referenz

C++-Ausnahmebehandlung

Weitere Ressourcen

How Do I: Erstellen Sie die eigenen benutzerdefinierten Ausnahme-Klassen?