Ausnahmen: Untersuchen von Ausnahmeinhalten
Obwohl das Argument eines catch
Blocks fast jeden Datentyp aufweisen kann, lösen die MFC-Funktionen Ausnahmen von Typen aus, die von der Klasse CException
abgeleitet sind. Um eine Ausnahme abzufangen, die von einer MFC-Funktion ausgelöst wird, schreiben Sie dann einen catch
Block, dessen Argument ein Zeiger auf ein CException
Objekt ist (oder ein Objekt, das von CException
, z. B CMemoryException
. abgeleitet, abgeleitet ist). Abhängig vom genauen Typ der Ausnahme können Sie die Datenmmber des Ausnahmeobjekts untersuchen, um Informationen über die spezifische Ursache der Ausnahme zu sammeln.
Beispielsweise weist der CFileException
Typ das m_cause
Datenelement auf, das einen Aufzählungstyp enthält, der die Ursache der Datei exception angibt. Einige Beispiele für mögliche Rückgabewerte sind CFileException::fileNotFound
und CFileException::readOnly
.
Das folgende Beispiel zeigt, wie der Inhalt einer .CFileException
Andere Ausnahmetypen können ebenfalls untersucht werden.
try
{
CFile file(_T("\\this_file_should_not_exist.dat"), CFile::modeRead);
}
catch (CFileException* theException)
{
if (theException->m_cause == CFileException::fileNotFound)
TRACE("File not found\n");
theException->Delete();
}
Weitere Informationen finden Sie unter Ausnahmen: Freigeben von Objekten in Ausnahmen und Ausnahmen: Abfangen und Löschen von Ausnahmen.