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 de 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.
Confira também
Escrevendo um manipulador de exceção
Tratamento de exceções estruturado (C/C++)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de