Namespaces
Variants

std::unexpected

De fr.cppreference.net
 
 
 
Défini dans l'en-tête <exception>
void unexpected();
(jusqu'à C++11)
[[noreturn]] void unexpected();
(depuis C++11)
(jusqu'à C++17)
(déprécié en C++11)

std::unexpected() est appelée par l'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ée 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 inattendu pendant le déroulement de la pile et que le déroulement mène ensuite à l'appel de unexpected, le gestionnaire qui était installé à la fin de l'expression throw est celui qui sera appelé (note : il était ambigu de savoir si le re-lancement appliquait les nouveaux gestionnaires).

(jusqu'à C++11)

Si un destructeur réinitialise le gestionnaire inattendu pendant le déroulement de la pile, il n'est pas spécifié quel gestionnaire est appelé si le déroulement mène ensuite à 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)