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 |
---|---|
Fora da memória |
|
Exceção de arquivo |
|
Exceção de serialização/arquivar |
|
Resposta à solicitação de serviço sem suporte |
|
Exceção de alocação de recurso do Windows |
|
Exceções de banco de dados (DAO classes) |
|
Exceções de banco de dados (ODBC classes) |
|
Exceções de OLE |
|
Exceções de despacho (automação) |
|
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: