Raison pour laquelle l’exception s’est produite. Il s’agit du code généré par une exception matérielle ou du code spécifié dans la fonction RaiseException pour une exception générée par logiciel. Les tableaux suivants décrivent les codes d’exception susceptibles de se produire en raison d’erreurs de programmation courantes.
Valeur
Signification
EXCEPTION_ACCESS_VIOLATION
Le thread a tenté de lire ou d’écrire dans une adresse virtuelle pour laquelle il ne dispose pas de l’accès approprié.
EXCEPTION_ARRAY_BOUNDS_EXCEEDED
Le thread a tenté d’accéder à un élément de tableau hors limites et le matériel sous-jacent prend en charge la vérification des limites.
EXCEPTION_BREAKPOINT
Un point d’arrêt a été rencontré.
EXCEPTION_DATATYPE_MISALIGNMENT
Le thread a essayé de lire ou d’écrire des données mal alignées sur du matériel qui ne fournit pas d’alignement. Par exemple, les valeurs 16 bits doivent être alignées sur les limites de 2 octets ; Valeurs 32 bits sur les limites de 4 octets, et ainsi de suite.
EXCEPTION_FLT_DENORMAL_OPERAND
L’un des opérandes d’une opération à virgule flottante est dénormal. Une valeur dénormale est une valeur trop petite pour être représentée sous la forme d’une valeur à virgule flottante standard.
EXCEPTION_FLT_DIVIDE_BY_ZERO
Le thread a essayé de diviser une valeur à virgule flottante par un diviseur à virgule flottante de zéro.
EXCEPTION_FLT_INEXACT_RESULT
Le résultat d’une opération à virgule flottante ne peut pas être représenté exactement sous la forme d’une fraction décimale.
EXCEPTION_FLT_INVALID_OPERATION
Cette exception représente toute exception à virgule flottante non incluse dans cette liste.
EXCEPTION_FLT_OVERFLOW
L’exposant d’une opération à virgule flottante est supérieur à la magnitude autorisée par le type correspondant.
EXCEPTION_FLT_STACK_CHECK
La pile a débordé ou sous-flux à la suite d’une opération à virgule flottante.
EXCEPTION_FLT_UNDERFLOW
L’exposant d’une opération à virgule flottante est inférieur à la magnitude autorisée par le type correspondant.
EXCEPTION_ILLEGAL_INSTRUCTION
Le thread a essayé d’exécuter une instruction non valide.
EXCEPTION_IN_PAGE_ERROR
Le thread a essayé d’accéder à une page qui n’était pas présente et le système n’a pas pu charger la page. Par exemple, cette exception peut se produire si une connexion réseau est perdue lors de l’exécution d’un programme sur le réseau.
EXCEPTION_INT_DIVIDE_BY_ZERO
Le thread a essayé de diviser une valeur entière par un diviseur entier de zéro.
EXCEPTION_INT_OVERFLOW
Le résultat d’une opération entière a provoqué une exécution du bit le plus significatif du résultat.
EXCEPTION_INVALID_DISPOSITION
Un gestionnaire d’exceptions a retourné une disposition non valide au répartiteur d’exceptions. Les programmeurs qui utilisent un langage de haut niveau comme C ne doivent jamais rencontrer cette exception.
EXCEPTION_NONCONTINUABLE_EXCEPTION
Le thread a tenté de poursuivre l’exécution après qu’une exception non continue s’est produite.
EXCEPTION_PRIV_INSTRUCTION
Le thread a tenté d’exécuter une instruction dont l’opération n’est pas autorisée en mode machine actuel.
EXCEPTION_SINGLE_STEP
Une interruption de trace ou un autre mécanisme d’instruction unique a signalé qu’une instruction a été exécutée.
EXCEPTION_STACK_OVERFLOW
Le thread a utilisé sa pile.
Un autre code d’exception est susceptible de se produire lors du débogage des processus de console. Elle ne se produit pas en raison d’une erreur de programmation. Le code d’exception DBG_CONTROL_C se produit lorsque CTRL+C est entré dans un processus de console qui gère les signaux CTRL+C et est en cours de débogage. Ce code d’exception n’est pas destiné à être géré par les applications. Il est déclenché uniquement pour le bénéfice du débogueur et est déclenché uniquement lorsqu’un débogueur est attaché au processus de console.
ExceptionFlags
Ce membre contient zéro ou plusieurs indicateurs d’exception. Le tableau suivant décrit certains des indicateurs d’exception couramment observés. Les indicateurs d’exception non présents dans le tableau suivant doivent être traités comme réservés à une utilisation système.
Indicateur d’exception
Signification
EXCEPTION_NONCONTINUABLE
La présence de cet indicateur indique que l’exception est une exception non continuable, tandis que l’absence de cet indicateur indique que l’exception est une exception continuable.
Toute tentative de poursuite de l’exécution après une exception non continue provoque l’exception EXCEPTION_NONCONTINUABLE_EXCEPTION .
EXCEPTION_SOFTWARE_ORIGINATE
Cet indicateur est réservé à l’utilisation du système.
ExceptionRecord
Pointeur vers une structure de EXCEPTION_RECORD associée. Les enregistrements d’exception peuvent être chaînés pour fournir des informations supplémentaires lorsque des exceptions imbriquées se produisent.
ExceptionAddress
Adresse où l’exception s’est produite.
NumberParameters
Nombre de paramètres associés à l’exception. Il s’agit du nombre d’éléments définis dans le tableau ExceptionInformation .
Tableau d’arguments supplémentaires qui décrivent l’exception. La fonction RaiseException peut spécifier ce tableau d’arguments. Pour la plupart des codes d’exception, les éléments du tableau ne sont pas définis. Le tableau suivant décrit les codes d’exception dont les éléments de tableau sont définis.
Code d'exception
Signification
EXCEPTION_ACCESS_VIOLATION
Le premier élément du tableau contient un indicateur en lecture-écriture qui indique le type d’opération qui a provoqué la violation d’accès. Si cette valeur est égale à zéro, le thread a tenté de lire les données inaccessibles. Si cette valeur est 1, le thread a tenté d’écrire dans une adresse inaccessible.
Si cette valeur est 8, le thread a provoqué une violation de la prévention de l’exécution des données (DEP) en mode utilisateur.
Le deuxième élément de tableau spécifie l’adresse virtuelle des données inaccessibles.
EXCEPTION_IN_PAGE_ERROR
Le premier élément du tableau contient un indicateur en lecture-écriture qui indique le type d’opération qui a provoqué la violation d’accès. Si cette valeur est égale à zéro, le thread a tenté de lire les données inaccessibles. Si cette valeur est 1, le thread a tenté d’écrire dans une adresse inaccessible.
Si cette valeur est 8, le thread a provoqué une violation de la prévention de l’exécution des données (DEP) en mode utilisateur.
Le deuxième élément de tableau spécifie l’adresse virtuelle des données inaccessibles.
Le troisième élément de tableau spécifie le code NTSTATUS sous-jacent qui a entraîné l’exception.
Remarques
Pour permettre à un débogueur de déboguer une cible qui s’exécute sur une architecture différente (32 bits au lieu de 64 bits), utilisez l’une des formes explicites de cette structure.