Namespaces
Variants

std:: unexpected_handler

From cppreference.net
Défini dans l'en-tête <exception>
typedef void ( * unexpected_handler ) ( ) ;
(obsolète en C++11)
(supprimé en C++17)

std::unexpected_handler est le type de pointeur de fonction (pointeur vers fonction ne prenant aucun argument et retournant void), qui est installé et interrogé par les fonctions std::set_unexpected et std::get_unexpected et appelé par std::unexpected .

L'implémentation C++ fournit une fonction std::unexpected_handler par défaut, qui appelle std::terminate() . Si la valeur de pointeur nul est installée (au moyen de std::set_unexpected ), l'implémentation peut restaurer le gestionnaire par défaut à la place.

Un gestionnaire d'exception inattendue défini par l'utilisateur std::unexpected_handler est censé soit terminer le programme, soit lever une exception. S'il lève une exception, l'une des trois situations suivantes peut se produire :

1) l'exception levée par std::unexpected_handler satisfait la spécification d'exception dynamique qui avait été violée précédemment. La nouvelle exception est autorisée à s'échapper de la fonction et le déroulement de la pile se poursuit.

2) l'exception levée par std::unexpected_handler viole toujours la spécification d'exception :

2a) cependant, la spécification d'exception autorise std::bad_exception : l'objet d'exception levé est détruit, et std::bad_exception est construit par l'environnement d'exécution C++ et levé à la place.

2b) la spécification d'exception n'autorise pas std::bad_exception : std::terminate() est appelée.

Voir aussi

(obsolète en C++11) (supprimé en C++17)
fonction appelée lorsque la spécification d'exception dynamique est violée
(fonction)
(obsolète en C++11) (supprimé en C++17)
modifie la fonction à appeler par std::unexpected
(fonction)
(obsolète en C++11) (supprimé en C++17)
obtient le unexpected_handler actuel
(fonction)