GetExceptionCode
9/8/2008
Essa função recupera uma codificar que identifica o tipo de exceção que ocorreu.
GetExceptionCode pode ser chamado somente de dentro da expressão filtro ou exceção-bloco manipulador de um Tente-exceto manipulador de exceção.
Syntax
DWORD GetExceptionCode(void);
Parameters
Nenhum.
Return Value
O valor de retorno identifica o tipo de exceção, como mostra a seguinte lista:
- EXCEPTION_ACCESS_VIOLATION
O segmento tentado ler de ou de gravação para um endereço virtual que ele não tem apropriado acessar para.
- EXCEPTION_ARRAY_BOUNDS_EXCEEDED
O segmento tentado acessar um elemento matriz que está out of limites e o subjacente hardware oferece suporte à verificação de limites.
- EXCEPTION_BREAKPOINT
Foi encontrada uma ponto de interrupção.
EXCEPTION_DATATYPE_MISALIGNMENT
O segmento tentado ler ou dados de gravação que seja desalinhados no hardware que não ofereça alinhamento.De exemplo, 16 - bit valores devem ser alinhados no 2 - byte limites, 32 - bit valores em 4 - byte limites e assim por diante.
- EXCEPTION_FLT_DENORMAL_OPERAND
Um operando em um operação com ponto flutuante é muito pequeno para representar como um padrão ponto flutuante valor.
- EXCEPTION_FLT_DIVIDE_BY_ZERO
O segmento tentou dividir um ponto flutuante valor por um ponto flutuante Divisor de zero.
- EXCEPTION_FLT_INEXACT_RESULT
O resultado de uma operação com ponto flutuante não pode ser representado exatamente como um decimal fração.
- EXCEPTION_FLT_INVALID_OPERATION
Essa exceção representa um ponto flutuante exceção não incluída nessa lista.
- EXCEPTION_FLT_OVERFLOW
Expoente de uma operação com ponto flutuante é maior do que a magnitude permitido pelo correspondente tipo.
- EXCEPTION_FLT_STACK_CHECK
A pilha estourou ou underflowed as a result of um operação com ponto flutuante.
- EXCEPTION_FLT_UNDERFLOW
Expoente de uma operação com ponto flutuante é menor do que a magnitude permitido pelo correspondente tipo.
- EXCEPTION_INT_DIVIDE_BY_ZERO
O segmento tentou dividir um valor inteiro por um divisor inteiro de zero.
- EXCEPTION_INT_OVERFLOW
O resultado de uma operação inteiro causou um contêm out of o bit mais significativo do resultado.
- EXCEPTION_NONCONTINUABLE_EXCEPTION
O segmento tentou continuar execução após Ocorreu uma exceção noncontinuable.
- EXCEPTION_PRIV_INSTRUCTION
O segmento tentado executar uma instrução cuja operação não é permitida o atual modo máquina.
- EXCEPTION_SINGLE_STEP
Um interceptar rastrear ou outro único-instrução mecanismo sinalizado que uma instrução foi executar.
Remarks
O arquivo cabeçalho Excpt.h deve ser explicitamente incluído para usar GetExceptionCode.
GetExceptionCode pode ser chamado somente de dentro da expressão filtro ou exceção-bloco manipulador de um Tente-exceto declaração. Expressão de filtro é avaliado se ocorrer uma exceção durante a execução das Tente bloco e ele determina se a exceto bloco é executado.
A expressão filtro pode invocar uma função filtro. A função filtro não é possível chamar GetExceptionCode. No entanto, o valor de retorno do GetExceptionCode Pode ser passado como um parâmetro para uma função filtro.
O valor de retorno da função GetExceptionInformation também podem ser passados como um parâmetro para uma função filtro. GetExceptionInformation Retorna um ponteiro para uma estrutura que inclui a exceção-codificar informações.
O seguinte exemplo de código mostra a estrutura de um Tente-exceto declaração.
try
{
// try block
}
except (FilterFunction(GetExceptionCode())
{
// exception handler block
}
Na maiúsculas e minúsculas de aninhados Tente-exceto Instruções, a expressão filtro DE CADA declaração é avaliada até que uma é avaliada como EXCEPTION_EXECUTE_HANDLER ou EXCEPTION_CONTINUE_EXECUTION. Cada expressão filtro pode invocar GetExceptionCode Para codificar a exceção get.
Codificar a exceção retornada é o codificar gerada por uma exceção hardware, ou a codificar especificado na função RaiseException para uma exceção software-generated.
Quando manipulação de exceção ponto de interrupção, o ponteiro de instrução no registro de contexto deve ser incrementada para continuar a partir esta exceção.
Exceções que ocorrer através de limites PSL deve se comportam exatamente como exceções entre funções no mesmo processo, com exceção de que a exceção não pode ser continuada com EXCEPTION_CONTINUE_EXECUTION.
Requirements
Header | excpt.h |
Library | coredll.lib |
Windows Embedded CE | Windows CE 1.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |