Partager via


set_unexpected (CRT)

Installe votre propre fonction d'arrêt soit appelée par unexpected.

unexpected_function set_unexpected(
   unexpected_function unexpFunction 
);

Paramètres

  • unexpFunction
    Pointeur vers une fonction que vous écrivez pour remplacer la fonction d' unexpected .

Valeur de retour

Retourne un pointeur vers une fonction précédente d'arrêt stockée par _set_unexpected afin que la fonction précédente puisse être restaurées 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 d' set_unexpected installe unexpFunction comme fonction appelée par unexpected.unexpected n'est pas utilisé dans l'implémentation de la gestion des exceptions C++ actuels.Le type d' unexpected_function est défini dans EH.H en tant que pointeur vers une fonction inattendue définie par l'utilisateur, unexpFunction qui retourne void.Votre fonction personnalisée d' unexpFunction ne doit jamais revenir à son appelant.

typedef void ( *unexpected_function )( );

Par défaut, appelle terminated' unexpected .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 la fonction comme argument.unexpected appelle la dernière fonction donnée comme argument à set_unexpected.

Contrairement à la fonction personnalisée d'arrêt installée par un appel à set_terminate, une exception peut être levée d' unexpFunction.

Dans un environnement multithread, des fonctions inattendues sont conservées séparément pour chaque thread.Besoins de chaque les nouveaux threads d'installer sa propre fonction inattendue.ainsi, chaque thread est responsable de sa propre gestion inattendue.

Dans l'implémentation Microsoft actuelle de la gestion des exceptions C++, unexpected appelle terminate par défaut et n'est jamais appelé par la bibliothèque Runtime de gestion des exceptions.il n'y a aucun avantage particulier à appeler unexpected plutôt qu' terminate.

Il existe un gestionnaire unique d' set_unexpected pour toutes les DLL ou EXE dynamiquement liés ; même si vous appelez set_unexpected votre gestionnaire peut être remplacée par une autre ou que vous remplacez un gestionnaire défini par une DLL ou un EXÉCUTABLE différent.

Configuration requise

routine

en-tête requis

set_unexpected

<eh.h>

Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.

Voir aussi

Référence

Routines de gestion des exceptions

abort

_get_unexpected

set_terminate (CRT)

terminate (CRT)

unexpected (CRT)