Sintaxe do manipulador
Esta seção descreve a sintaxe e o uso do tratamento de exceções estruturadas conforme implementado no Microsoft C/C++ Optimizing Compiler. As palavras-chave a seguir são interpretadas pelo compilador como parte do mecanismo estruturado de manipulação de exceções.
Palavra-chave | Descrição |
---|---|
__try | Começa um corpo protegido de código. Usado com a palavra-chave __except para construir um manipulador de exceção ou com a palavra-chave __finally para construir um manipulador de terminação. |
__except | Inicia um bloco de código que é executado somente quando ocorre uma exceção dentro de seu bloco __try associado. |
__finally | Inicia um bloco de código que é executado sempre que o fluxo de controle deixa seu bloco __try associado. |
__leave | Permite o término imediato do bloqueio de __try sem causar rescisão anormal e sua penalidade de desempenho. |
O compilador também interpreta as funções GetExceptionCode, GetExceptionInformation e AbnormalTermination como palavras-chave, e seu uso fora da sintaxe apropriada de manipulação de exceções gera um erro do compilador. A seguir estão breves descrições dessas funções.
Função | Descrição |
---|---|
GetExceptionCode | Retorna um código que identifica o tipo de exceção. Essa função pode ser chamada somente de dentro da expressão de filtro ou do bloco manipulador de exceções. |
GetExceptionInformation | Retorna um ponteiro para uma estrutura EXCEPTION_POINTERS que contém ponteiros para o registro de contexto e o registro de exceção. Essa função pode ser chamada somente de dentro da expressão de filtro de um manipulador de exceções. |
Rescisão anormal | Indica se o fluxo de controle deixou o bloco de __try associado sequencialmente após a execução da última instrução no bloco. Essa função pode ser chamada somente de dentro do bloco __finally de um manipulador de terminação. |