Exceptions : examen du contenu des exceptions
Bien que l’argument d’un catch
bloc puisse être de presque n’importe quel type de données, les fonctions MFC lèvent des exceptions de types dérivés de la classe CException
. Pour intercepter une exception levée par une fonction MFC, vous écrivez un catch
bloc dont l’argument est un pointeur vers un CException
objet (ou un objet dérivé de CException
, par exemple CMemoryException
). Selon le type exact de l’exception, vous pouvez examiner les membres de données de l’objet exception pour collecter des informations sur la cause spécifique de l’exception.
Par exemple, le CFileException
type a le m_cause
membre de données, qui contient un type énuméré qui spécifie la cause de l’exception de fichier. Voici quelques exemples des valeurs CFileException::fileNotFound
de retour possibles et CFileException::readOnly
.
L’exemple suivant montre comment examiner le contenu d’un CFileException
. D’autres types d’exceptions peuvent être examinés de la même façon.
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();
}
Pour plus d’informations, consultez Exceptions : Libération d’objets dans exceptions et exceptions : capture et suppression d’exceptions.