Partager via


set_unexpected (CRT)

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

unexpected_function set_unexpected(
   unexpected_function unexpFunction 
);

Paramètres

  • unexpFunction
    Pointeur vers une fonction que vous écrirez pour remplacer la fonction unexpected.

Valeur de retour

Retourne un pointeur vers la fonction précédente d'arrêt indiquée par _set_unexpected afin que la fonction précédente puisse être restaurée plus tard. Si aucune fonction n'est 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 la 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 en tant que pointeur vers une fonction inattendu définie par l'utilisateur, unexpFunction qui retourne void. Votre fonction personnalisée unexpFunction ne devrait pas retourner à l'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 son argument. La routine unexpectedappelle toujours 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 à partir de unexpFunction.

Dans un environnement multithread, les fonctions inattendues sont contenues séparément pour chaque thread. Chacun des nouveaux threads a beson d'installer sa propre fonction inattendue. Par conséquent, 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 run-time de gestion des exceptions. Il n'existe aucun avantage particulier à appeler unexpected plutôt que terminate.

Il existe un seul gestionnaire set_unexpected pour toutes les DLL ou EXEs dynamiquement liés ; même si vous appelez set_unexpected votre gestionnaire peut être remplacé par un autre ou que vous remplacez un set de gestionnaire par une DLL ou un fichier EXE différent.

Configuration requise

Routine

En-tête requis

set_unexpected

<EH.H>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Voir aussi

Référence

Routines de la gestion d'exceptions

abort

_get_unexpected

set_terminate (CRT)

terminate (CRT)

inattendu (CRT)