Compartilhar via


Tratamento de exceções em MFC

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

  • Exceções C++, disponíveis na versão 3,0 e posterior MFC

  • Macros de exceção MFC, disponíveis nas versões 1,0 e posterior MFC

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

Você pode converter prontamente o código existente para usar exceções C++ em vez de macros de exceção MFC. As vantagens de converter seus código e diretrizes para fazer isso são descritas no artigo Exceções: convertendo a partir de macros de exceção MFC.

Se você tiver um aplicativo já desenvolvido usando macros de exceção MFC, você poderá continuar a usar esses macros em seu código existente, ao usar exceções C++ em seu novo código. O artigo Exceções: alterações feitas em macros de exceção na versão 3.0 contém diretrizes para fazer isso.

Dica

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

Este artigo abrange os seguintes tópicos:

  • Quando usar exceções

  • Suporte à exceção de MFC

  • Leitura adicionais 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, execute errônea, ou execução anormal. Cada categoria é descrita abaixo.

  • Execução normal

    A função pode executar normalmente e retornar. Algumas funções retornam o código de resultado para o chamador, que indica o resultado da função. Os códigos de resultados possíveis são definidos estritamente 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 mesmo pode indicar um tipo específico de falha que está dentro do intervalo normal das expectativas. Por exemplo, uma função de arquivo status pode retornar um código que indica que o arquivo não existir. Observe que o termo “código de erro” não é usado como um código de resultado representa um dos vários resultados esperados.

  • Execução errônea

    O chamador faz qualquer erro na argumentos à função ou chama a função em um contexto inadequada. Essa situação causa um erro, e deve ser detectada por uma asserção durante desenvolvimento de programas. (Para obter mais informações sobre as asserções, consulte Asserções C/C++.)

  • Anormal execução

    A execução anormal inclui as situações em que as condições fora do controle de programa, como a memória baixa ou erros de E/S, está influenciando o resultado da função. As situações anormais devem ser tratadas por exceções capturando e de reprodução.

Usar exceções é especialmente apropriada para a execução anormal.

Suporte à exceção de MFC

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

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

Classe de exceção

Significado

Classe CMemoryException

Falta de memória

Classe CFileException

Exceção de Arquivo

Classe CArchiveException

Exceção de arquivo morto/serialização

Classe CNotSupportedException

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

Classe CResourceException

Exceção de atribuição de recursos do windows

Classe CDaoException

Exceções da base de dados de classes DAO ()

Classe CDBException

Exceções da base de dados de classes (ODBC)

Classe COleException

Exceções OLE

Classe COleDispatchException

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

Classe CUserException

A exceção que o alerta usuário com uma caixa de mensagem em seguida, gerencie Classe CExceptiongenérico

Dica

MFC O oferece suporte às exceções de C++ e macros de exceção MFC.MFC O não da suporte diretamente manipuladores estruturados o Windows NT (SEH) de exceção, como discutido em Manipulação de exceção estruturado.

Leitura adicionais sobre exceções

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

Os artigos a seguir compara as macros de exceção MFC com as palavras-chave de exceção C++ e também explica como você pode adaptar o código:

Consulte também

Referência

Tratamento de exceções C++

Outros recursos

Como fazer: Crie as próprias classes personalizadas de exceção?