Partager via


exception_ptr

Type qui décrit un pointeur vers une exception.

typedef unspecified exception_ptr;

Notes

Une classe interne non spécifiée utilisée pour implémenter le type exception_ptr.

Utilisez un objet exception_ptr pour référencer l'exception actuelle ou une instance d'une exception spécifiée par l'utilisateur. Dans l'implémentation Microsoft, une exception est représentée par une structure EXCEPTION_RECORD. Chaque objet exception_ptr inclut un champ de référence d'exception qui pointe vers une copie de la structure EXCEPTION_RECORD qui représente l'exception.

Lorsque vous déclarez une variable exception_ptr, la variable n'est associée à aucune exception. Autrement dit, son champ de référence d'exception est NULL. Un tel objet exception_ptr est appelé null exception_ptr.

Utilisez la fonction current_exception ou make_exception_ptr pour assigner une exception à un objet exception_ptr. Lorsque vous assignez une exception à une variable exception_ptr, le champ de référence de l'exception de la variable pointe vers une copie de l'exception. Si la mémoire est insuffisante pour copier l'exception, le champ de référence d'exception pointe vers une copie d'une exception std::bad_alloc. Si la fonction current_exception ou make_exception_ptr ne peut pas copier l'exception pour une autre raison, la fonction appelle la fonction terminate (CRT) pour quitter le processus actuel.

En dépit de son nom, un objet exception_ptr n'est pas lui-même un pointeur. Il ne respecte pas la sémantique des pointeurs et ne peut pas être utilisé avec les accès des membres pointeurs (->) ou des opérateurs d'indirection (*). L'objet exception_ptr n'a aucune donnée membre ou fonction membre publique.

Comparaisons :

Vous pouvez utiliser les opérateurs égal (==) et non égal (!=) pour comparer deux objets exception_ptr. Les opérateurs ne comparent pas la valeur binaire (modèle binaire) des structures EXCEPTION_RECORD qui représentent les exceptions. À la place, les opérateurs comparent les adresses dans le domaine de référence d'exception des objets exception_ptr. Par conséquent, une exception exception_ptr null et la valeur NULL sont considérées comme égales.

Voir aussi

Référence

<exception>

Transport d'exceptions entre les threads