std:: unexpected_handler
|
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) |