Compartilhar via


Tratamento de exceção no MFC

Este artigo explica os mecanismos de manipulação de exceção disponíveis no MFC.Dois mecanismos estão disponíveis:

  • Exceções do C++, disponíveis na versão MFC 3.0 e posteriores

  • As macros de exceção MFC, disponíveis em MFC versões 1.0 e posteriores

Se você estiver escrevendo um novo aplicativo usando o MFC, você deve usar o mecanismo de C++.Você pode usar o mecanismo de macro se seu aplicativo já usa esse mecanismo extensivamente.

Prontamente, você pode converter código existente para usar exceções C++ em vez de macros de exceção MFC.Vantagens de converter seu código e as diretrizes para isso são descritas no artigo Exceções: Conversão de Macros de exceção do MFC.

Se você já tiver desenvolvido um aplicativo usando as macros de exceção MFC, você pode continuar usando essas macros no seu código, enquanto estiver usando exceções C++ no novo código.O artigo Exceções: Alterações de Macros de exceção na versão 3.0 oferece diretrizes para fazer isso.

ObservaçãoObservação

Para ativar seu código de manipulação de exceção de C++, selecione Habilitar exceções C++ na página de geração de código na pasta do projeto C/C++ Páginas de propriedades (C++) caixa de diálogo ou usar a opção de compilador /GX.O padrão é /GX–, que desabilita o tratamento de exceção.

Este artigo aborda os seguintes tópicos:

  • Quando usar exceções

  • Suporte de exceção do MFC

  • Leitura adicional sobre exceções

Quando usar exceções

Três categorias de resultados podem ocorrer quando uma função é chamada durante a execução do programa: execução normal, execução errada ou execução anormal.Cada categoria é descrita abaixo.

  • Execução normal

    A função pode ser executado normalmente e retornar.Algumas funções retornam um código de resultado para o chamador, indica o resultado da função.Os códigos de resultado possível estritamente definidos para a função e representam o intervalo de possíveis resultados da função.O código de resultado pode indicar êxito ou falha ou até mesmo pode indicar um determinado tipo de falha que está dentro do intervalo normal de expectativas.Por exemplo, uma função do status do arquivo pode retornar um código que indica que o arquivo não existe.Observe que o termo "código de erro" não é usado como um código de resultado representa um dos muitos resultados esperados.

  • Execução errada

    O chamador faz algum engano passando argumentos para a função ou chama a função em um contexto inadequado.Essa situação causa um erro e deve ser detectada por uma declaração durante o desenvolvimento do programa.(Para obter mais informações sobre declarações, consulte Declarações.)

  • Execução anormal

    Execução anormal inclui situações em que condições fora do controle do programa, como, por exemplo, pouca memória ou erros, estão influenciando o resultado da função.Situações anormais devem ser tratadas por captura e inclusão de exceções.

Usando exceções é especialmente apropriado para execução anormal.

Suporte de exceção do MFC

Se você usar exceções C++ diretamente ou usa as macros de exceção MFC, você usará Classe CException ou CException-derivado objetos que podem ser lançados pela estrutura ou pelo seu aplicativo.

A tabela a seguir mostra as exceções predefinidas fornecidas pelo MFC.

Classe de exceção

Significado

Classe CMemoryException

Falta de memória

Classe CFileException

Exceção de arquivo

Classe CArchiveException

Exceção de arquivamento/serialização

Classe CNotSupportedException

Resposta à solicitação de serviço sem suporte

Classe CResourceException

Exceção de alocação de recursos do Windows

Classe CDaoException

Exceções de banco de dados (classes DAO)

Classe CDBException

Exceções de banco de dados (classes ODBC)

Classe COleException

Exceções de OLE

Classe COleDispatchException

Exceções de expedição (automação)

Classe CUserException

Exceção que alerta o usuário com uma caixa de mensagem, em seguida, lança um genéricoClasse CException

ObservaçãoObservação

MFC oferece suporte a exceções do C++ e macros de exceção MFC.MFC não oferece suporte diretamente manipuladores de exceção de Windows NT estruturada (SEH), conforme discutido em Structured Exception Handling.

Leitura adicional sobre exceções

Os artigos a seguir explicam usando a biblioteca MFC para distribuição de exceção:

Os artigos a seguir comparam as macros de exceção MFC com as palavras-chave exceção de C++ e explicam como você pode adaptar seu código:

Consulte também

Referência

Manipulação de exceção do C++

Outros recursos

Como i: criar minhas próprias Classes de exceção personalizada?