Compartilhar via


Exceção Handling in MFC

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

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

  • As macros de exceção MFC, disponível no 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 o aplicativo existente já usa esse mecanismo extensivamente.

Você pode converter prontamente código existente para usar exceções C++ em vez de macros de exceção da MFC.Vantagens de converter seu código e as diretrizes para fazer isso são descritas o 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 do MFC, você pode continuar usando essas macros em seu código existente, enquanto estiver usando exceções do C++ em seu código novo.O artigo Exceções: Alterações exceção Macros na versão 3.0 Fornece diretrizes para fazer isso.

Observação:

Para ativar no seu código de manipulação de exceção de C++, selecionar Habilitar exceções C++ na página Code Generation na pasta do projeto C/C ++ Páginas de propriedades (C++) caixa de diálogo ou usar opção do compilador /GX. O padrão é /GX–, que desativa 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 incorreta 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, que indica o resultado da função.Os códigos de resultado possível estritamente são definidos para a função e representam a gama 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 das 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 incorreta

    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, sistema autônomo memória insuficiente ou erros de E/sistema autônomo estão influenciando o resultado da função.Situações anormais devem ser tratadas pelo captura e gerar exceções.

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

Suporte de exceção do MFC

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

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

Classe de exceção

Significado

Classe CMemoryException

Fora da memória

Classe CFileException

Exceção de arquivo

Classe CArchiveException

Exceção de serialização/arquivar

Classe CNotSupportedException

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

Classe CResourceException

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

Classe CDaoException

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

Classe CDBException

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

Classe COleException

Exceções de OLE

Classe COleDispatchException

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

Classe CUserException

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

Observação:

MFC oferece suporte a exceções do C++ e as macros de exceção do MFC.MFC não oferece suporte direto para manipuladores de exceção estruturada do Windows NT (SEH), conforme discutido em Manipulação de exceção estruturada.

Leitura adicional sobre exceções

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

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

Consulte também

Referência

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