Exceções: examinando o conteúdo da exceção
Embora o argumento de um bloco catch
possa ser de quase qualquer tipo de dados, as funções MFC geram exceções de tipos derivados da classe CException
. Para capturar uma exceção gerada por uma função MFC, escreva um bloco catch
cujo argumento é um ponteiro para um objeto CException
(ou um objeto derivado de CException
, como CMemoryException
). Dependendo do tipo exato da exceção, você pode examinar os membros de dados do objeto de exceção para coletar informações sobre a causa específica da exceção.
Por exemplo, o tipo CFileException
tem o membro de dados m_cause
, que contém um tipo enumerado que especifica a causa da exceção de arquivo. Alguns exemplos dos possíveis valores retornados são CFileException::fileNotFound
e CFileException::readOnly
.
O exemplo a seguir mostra como examinar o conteúdo de um CFileException
. Outros tipos de exceção podem ser examinados de maneira semelhante.
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();
}
Para obter mais informações, consulte Exceções: liberando objetos em exceções e Exceções: capturando e excluindo exceções.