Compartilhar via


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.

Confira também

Tratamento de exceção