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.
Hinweis |
---|
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 |
---|---|
Nicht genügend Arbeitsspeicher |
|
Dateiausnahme |
|
Archiv-/Serialisierung ausnahme |
|
Antwort auf die Anforderung nicht unterstützten Dienst |
|
Windows-Ressourcenzuordnungsausnahme |
|
Ausnahmen Datenbank (DAO-Klassen) |
|
Ausnahmen Datenbank (ODBC-Klassen) |
|
OLE-Ausnahmen |
|
Ausnahmen des Dispatchs (Automatisierung) |
|
Ausnahme, die den Benutzer mit einem Meldungsfeld benachrichtigt, löst generisches CException-Klasse aus |
Hinweis |
---|
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
Weitere Ressourcen
How Do I: Erstellen Sie die eigenen benutzerdefinierten Ausnahme-Klassen?