set_unexpected
(CRT)
Installe votre propre fonction d’arrêt qui doit être appelée par unexpected
.
Syntaxe
unexpected_function set_unexpected( unexpected_function unexpFunction );
Paramètres
unexpFunction
Pointeur désignant une fonction que vous écrivez pour remplacer la fonction unexpected
.
Valeur retournée
Retourne un pointeur désignant la précédente fonction d’arrêt inscrite par _set_unexpected
, si bien que la fonction précédente peut être restaurée ultérieurement. Si aucune fonction précédente n’a été définie, la valeur de retour peut être utilisée pour restaurer le comportement par défaut ; cette valeur peut être NULL
.
Notes
La fonction set_unexpected
installe unexpFunction
comme fonction appelée par unexpected
. unexpected
n’est pas utilisé dans l’implémentation actuelle de gestion des exceptions C++. Le type unexpected_function
est défini dans EH.H comme pointeur vers une fonction inattendue défini par l’utilisateur, unexpFunction
qui retourne void
. Votre fonction personnalisée unexpFunction
ne doit pas revenir à son appelant.
typedef void ( *unexpected_function )( );
Par défaut, unexpected
appelle terminate
. Vous pouvez modifier ce comportement par défaut en écrivant votre propre fonction d’arrêt et en appelant set_unexpected
avec le nom de votre fonction comme argument. unexpected
appelle la dernière fonction transmise comme argument à set_unexpected
.
Contrairement à la fonction d’arrêt personnalisée dont l’installation résulte d’un appel à set_terminate
, une exception peut être levée à partir de unexpFunction
.
Dans un environnement multithread, les fonctions inattendues sont gérées séparément pour chaque thread. Chaque nouveau thread doit installer sa propre fonction inattendue. Par conséquent, chaque thread est responsable de sa propre gestion inattendue.
Dans l’implémentation Microsoft actuelle de gestion des exceptions C++, unexpected
appelle par défaut la fonction terminate
, qui n’est jamais appelée par la bibliothèque runtime de gestion des exceptions. Il n’y a pas d’avantage particulier à appeler unexpected
plutôt qu’à terminate
.
Il existe un seul set_unexpected
gestionnaire pour toutes les DLL ou EXEs liées dynamiquement ; même si vous appelez set_unexpected
votre gestionnaire peut être remplacé par un autre ou que vous remplacez un gestionnaire défini par une autre DLL ou EXE.
Spécifications
Routine | En-tête requis |
---|---|
set_unexpected |
<eh.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Voir aussi
Routines de gestion des exceptions
abort
_get_unexpected
set_terminate
terminate
unexpected