Compartilhar via


(C++) de manipulação de exceção estruturada

Suportam a uma abordagem robusta para tratamento de exceções, chamadas de manipulação de exceção estruturada, que envolve a cooperação do sistema operacional, mas também tem suporte direto na linguagem de programação Windows 95, Windows 98 e Windows 2000 (anteriormente conhecido como Windows NT).

Gramática

exceto instrução try :

__try instrução de compostos

__except( expressão ) declaração de compostos

Comentários

Uma exceção é um evento que é inesperado ou interrompe a capacidade do processo de proceder normalmente.Exceções podem ser detectadas pelo hardware e software.Exceções de hardware incluem a divisão por zero e o estouro de um tipo numérico.Exceções de software incluem aqueles você detectar e sinalizar para o sistema chamando o RaiseException função e situações especiais detectadas pelo Windows.

Você pode escrever código mais confiável com a manipulação de exceção estruturada.Você pode garantir que os recursos, como, por exemplo, blocos de memória e arquivos, estão fechados adequadamente em caso de encerramento inesperado.Você também pode tratar de problemas específicos, como, por exemplo, não há memória suficiente, com o código estruturado conciso que não depende de goto instruções ou teste elaborado de códigos de retorno.

O tente-exceto e try-finally as declarações são uma extensão Microsoft para a linguagem c que permite que aplicativos assumir o controle de um programa após os eventos que normalmente seriam finalizar a execução.

ObservaçãoObservação

Manipulação de exceção estruturada trabalha com arquivos de código-fonte c e C++.No entanto, ele não é especificamente projetado para C++.Embora os destruidores para objetos locais serão chamados se você usar um programa C++ de manipulação de exceção estruturada (se você usar /EHsc), você pode garantir que seu código seja mais portátil usando o tratamento de exceções do C++.O o tratamento de exceção de C++ mecanismo é mais flexível, que pode lidar com exceções de qualquer tipo.

Há dois mecanismos de manipulação de exceção estruturada:

Esses dois tipos de manipuladores são distintos, ainda que eles estão intimamente relacionados através de um processo chamado "desenrolar a pilha". Quando ocorre uma exceção, o Windows procura o manipulador de exceção instalado mais recentemente que está ativo no momento.O manipulador pode fazer uma destas três coisas:

  • Passe o controle para outros manipuladores (fail para reconhecer a exceção).

  • Reconhecer mas descartar a exceção.

  • Reconhecer e tratar a exceção.

O manipulador de exceção que reconhece a exceção não esteja na função que estava sendo executado quando a exceção ocorreu.Em alguns casos, ele pode estar em uma função muito maior na pilha.A função atualmente em execução, bem como todas as funções na estrutura de pilhas, são encerradas.Durante esse processo, a pilha é "organizada": variáveis locais de terminada a funções, a menos que sejam estático, são limpas da pilha.

Como ele esvazia a pilha, o sistema operacional chama quaisquer manipuladores de terminação que você escreveu para cada função.Uso de um manipulador de terminação é uma oportunidade de limpar os recursos que seriam permaneça abertos por causa de anormal.Se você inseriu uma seção crítica, você pode sair no manipulador de terminação.Se o programa for encerrado, você pode executar outras tarefas de manutenção do sistema como, por exemplo, fechar e removendo arquivos temporários.

Se você tiver módulos c que usam manipulação de exceção estruturada, eles podem ser combinados com os módulos de C++ que usam a manipulação de exceção de C++.Consulte as diferenças de tratamento de exceção.

Para obter mais informações, consulte:

Consulte também

Referência

Tratamento de exceção no Visual C++

Palavras-chave C++