Partager via


Exceptions matérielles

La plupart des exceptions standard identifiées par le système d'exploitation sont des exceptions définies par le matériel. Windows identifie quelques exceptions logicielles de bas niveau, mais celles-ci sont généralement gérées de façon optimale par le système d'exploitation.

Windows mappe les erreurs matérielles des différents processeurs aux codes d'exception figurant dans cette section. Dans certains cas, un processeur peut générer uniquement un sous-ensemble de ces exceptions. Windows prétraite les informations sur l'exception et émet le code d'exception approprié.

Les exceptions matérielles identifiées par Windows sont résumées dans le tableau suivant :

Code d'exception Raison de l'exception
STATUS_ACCESS_VIOLATION Lecture ou écriture à un emplacement mémoire inaccessible.
STATUS_BREAKPOINT Rencontre d'un point d'arrêt défini par le matériel ; utilisé uniquement par les débogueurs.
STATUS_DATATYPE_MISALIGNMENT Lecture ou écriture dans les données à une adresse qui n'est pas correctement alignée ; par exemple, des entités 16 bits doivent être alignées sur des limites de 2 octets. (Non applicable aux processeurs Intel 80x86.)
STATUS_FLOAT_DIVIDE_BY_ZERO Division du type à virgule flottante par 0,0.
STATUS_FLOAT_OVERFLOW Dépassement de l'exposant positif maximal du type à virgule flottante.
STATUS_FLOAT_UNDERFLOW Dépassement de la grandeur de l'exposant négatif le plus bas du type à virgule flottante.
STATUS_FLOATING_RESEVERED_OPERAND Utilisation d'un format à virgule flottante réservé (utilisation non valide de format).
STATUS_ILLEGAL_INSTRUCTION Tentative d'exécution d'un code d'instruction non défini par le processeur.
STATUS_PRIVILEGED_INSTRUCTION Exécution d'une instruction non autorisée dans le mode actuel de l'ordinateur.
STATUS_INTEGER_DIVIDE_BY_ZERO Division d'un type entier par 0.
STATUS_INTEGER_OVERFLOW Tentative d'une opération qui dépasse la plage de l'entier.
STATUS_SINGLE_STEP Exécution d'une instruction en mode pas à pas ; utilisé uniquement par les débogueurs.

Un grand nombre des exceptions répertoriées dans le tableau précédent sont destinées à être gérées par les débogueurs, le système d'exploitation ou un autre code de bas niveau. À l'exception des erreurs relatives aux entiers et aux nombres à virgule flottante, votre code ne doit pas gérer ces erreurs. Ainsi, vous devez généralement utiliser le filtre de gestion des exceptions pour ignorer les exceptions (valeur 0). Sinon, vous risquez d'empêcher les mécanismes de niveau inférieur de réagir de manière appropriée. Toutefois, vous pouvez prendre des précautions appropriées contre l’effet potentiel de ces erreurs de bas niveau en écrivant des gestionnaires d’arrêt.

Voir aussi

Écriture d’un gestionnaire d’exceptions
Structured Exception Handling (C/C++)