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 |
---|---|
Falta de memória |
|
Exceção de Arquivo |
|
Exceção de arquivo morto/serialização |
|
Resposta à solicitação para o serviço sem suporte |
|
Exceção de atribuição de recursos do windows |
|
Exceções da base de dados de classes DAO () |
|
Exceções da base de dados de classes (ODBC) |
|
Exceções OLE |
|
Exceções de distribuição (automação) |
|
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
Outros recursos
Como fazer: Crie as próprias classes personalizadas de exceção?