Compartilhar via


Exceções de hardware

A maioria das exceções padrão reconhecidas pelo sistema operacional é exceções definidas pelo hardware.O Windows reconhece algumas exceções de software de nível inferior, mas eles são geralmente mais facilmente tratados pelo sistema operacional.

Windows mapeia os erros de hardware de diferentes processadores para os códigos de exceção nesta seção.Em alguns casos, um processador pode gerar apenas um subconjunto dessas exceções.O Windows pré-processa informações sobre a exceção e emite o código de exceção apropriado.

As exceções de hardware reconhecidas pelo Windows estão resumidas na tabela a seguir:

Código de exceção

Causa da exceção

STATUS_ACCESS_VIOLATION

Ler ou gravar em um local de memória inacessível.

STATUS_BREAKPOINT

Se deparar com um ponto de interrupção definido pelo hardware; usado somente por depuradores.

STATUS_DATATYPE_MISALIGNMENT

Ler ou gravar dados em um endereço que não está alinhado corretamente; Por exemplo, entidades de 16 bits precisam ser alinhadas em limites de 2 bytes.(Não aplicável a 80 Intelxx86 processadores.)

STATUS_FLOAT_DIVIDE_BY_ZERO

Dividir o tipo de ponto flutuante por 0.0.

STATUS_FLOAT_OVERFLOW

Excedendo o máximo expoente positivo do tipo de ponto flutuante.

STATUS_FLOAT_UNDERFLOW

Excedendo a magnitude do expoente de negativo menor do tipo de ponto flutuante.

STATUS_FLOATING_RESEVERED_OPERAND

Usando um formato de ponto flutuante reservado (uso inválido do formato).

STATUS_ILLEGAL_INSTRUCTION

Tentando executar um código de instrução não é definido pelo processador.

STATUS_PRIVILEGED_INSTRUCTION

Executando uma instrução que não é permitida no modo de máquina atual.

STATUS_INTEGER_DIVIDE_BY_ZERO

Dividir um tipo inteiro por 0.

STATUS_INTEGER_OVERFLOW

Tentando uma operação que excede o intervalo do número inteiro.

STATUS_SINGLE_STEP

Executar uma instrução no modo de etapa única; usado somente por depuradores.

Muitas das exceções listadas na tabela anterior destinam-se para ser manipulado por depuradores, o sistema operacional ou outro código de nível inferior.Com exceção do número inteiro e erros de ponto flutuante, o seu código não deve lidar com esses erros.Assim, você normalmente deve usar o filtro de manipulação de exceção para ignorar as exceções (avaliar como 0).Caso contrário, você pode impedir que os mecanismos de nível inferior de responder apropriadamente.Você no entanto, pode tomar precauções de apropriada contra o efeito em potencial destes erros de baixo nível por escrever manipuladores de terminação.

Consulte também

Referência

Escrever um manipulador de exceção

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