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çã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 |
---|---|
Falta de memória |
|
Exceção de arquivo |
|
Exceção de arquivamento/serialização |
|
Resposta à solicitação de serviço sem suporte |
|
Exceção de alocação de recursos do Windows |
|
Exceções de banco de dados (classes DAO) |
|
Exceções de banco de dados (classes ODBC) |
|
Exceções de OLE |
|
Exceções de expedição (automação) |
|
Exceção que alerta o usuário com uma caixa de mensagem, em seguida, lança um genéricoClasse CException |
Observaçã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
Outros recursos
Como i: criar minhas próprias Classes de exceção personalizada?