Namespaces
Variants

std:: unexpected

From cppreference.net
Défini dans l'en-tête <exception>
void unexpected ( ) ;
(jusqu'à C++11)
[ [ noreturn ] ] void unexpected ( ) ;
(obsolète en C++11)
(supprimé en C++17)

std::unexpected() est appelé par l'environnement d'exécution C++ lorsqu'une spécification d'exception dynamique est violée : une exception est levée depuis une fonction dont la spécification d'exception interdit les exceptions de ce type.

std::unexpected() peut également être appelé directement depuis le programme.

Dans les deux cas, std::unexpected appelle le std::unexpected_handler actuellement installé. Le std::unexpected_handler par défaut appelle std::terminate .

Si un destructeur réinitialise le gestionnaire d'exceptions inattendues pendant le déroulement de la pile et que le déroulement conduit ultérieurement à l'appel de unexpected , le gestionnaire qui était installé à la fin de l'expression throw est celui qui sera appelé (note : il était ambigu si la relance appliquait les nouveaux gestionnaires).

(jusqu'en C++11)

Si un destructeur réinitialise le gestionnaire d'exceptions inattendues pendant le déroulement de la pile, il n'est pas spécifié quel gestionnaire est appelé si le déroulement conduit ultérieurement à l'appel de unexpected .

(depuis C++11)

Exceptions

Lance toute exception lancée par le std::unexpected_handler actuellement installé.

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement tel que publié Comportement corrigé
LWG 2111 C++11 l'effet de l'appel à std::set_unexpected pendant le déroulement
de la pile diffère de C++98 et brise certaines ABI
rendu non spécifié

Voir aussi

(C++23)
représenté comme une valeur inattendue
(modèle de classe)
(obsolète en C++11) (supprimé en C++17)
le type de la fonction appelée par std::unexpected
(typedef)