Partilhar via


Exceções de hardware

A maioria das exceções padrão reconhecidas pelo sistema operacional são exceções definidas por hardware. O Windows reconhece algumas exceções de software de nível baixo, mas elas geralmente são mais bem tratadas pelo sistema operacional.

O Windows mapeia os erros de hardware de processadores diferentes para os códigos de exceção nesta seção. Em alguns casos, um processador pode gerar somente 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 são resumidas na seguinte tabela:

Código da exceção

Causa da exceção

STATUS_ACCESS_VIOLATION

Leitura ou gravação em um local de memória inacessível.

STATUS_BREAKPOINT

Encontro de um ponto de interrupção definido por hardware; usado somente por depuradores.

STATUS_DATATYPE_MISALIGNMENT

Leitura ou gravação de dados em um endereço que não está alinhado corretamente; por exemplo, as entidades de 16 bits devem ser alinhadas em limites de 2 bytes. (Não aplicável a processadores Intel 80x86).

STATUS_FLOAT_DIVIDE_BY_ZERO

Divisão do tipo de ponto flutuante por 0,0.

STATUS_FLOAT_OVERFLOW

Expoente positivo máximo do tipo de ponto flutuante excedido.

STATUS_FLOAT_UNDERFLOW

Magnitude excedida do expoente negativo mais baixo do tipo de ponto flutuante.

STATUS_FLOATING_RESEVERED_OPERAND

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

STATUS_ILLEGAL_INSTRUCTION

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

STATUS_PRIVILEGED_INSTRUCTION

Execução de uma instrução não permitida no modo atual do computador.

STATUS_INTEGER_DIVIDE_BY_ZERO

Divisão de um tipo de inteiro por 0.

STATUS_INTEGER_OVERFLOW

Tentativa de uma operação que excede o intervalo do inteiro.

STATUS_SINGLE_STEP

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

Muitas das exceções listadas na tabela anterior devem ser tratadas por depuradores, pelo sistema operacional, ou outro código de nível baixo. Com a exceção de erros de inteiro e de ponto flutuante, seu código não deve tratar esses erros. Assim, geralmente você deve usar o filtro de tratamento de exceções para ignorar exceções (avaliado como 0). Caso contrário, você poderá impedir que os mecanismos de nível inferior respondam adequadamente. É possível, contudo, tomar precauções apropriadas contra o efeito potencial desses erros de baixo nível gravando manipuladores de término.

Consulte também

Referência

Escrevendo um manipulador de exceção

Tratamento de exceções estruturado (C/C++)