Namespaces
Variants

std::unexpected

Von de.cppreference.net
 
 
 
Definiert in Header <exception>
void unexpected();
(bis C++11)
[[noreturn]] void unexpected();
(seit C++11)
(bis C++17)
(veraltet in C++11)

std::unexpected() wird von der C++-Laufzeitumgebung aufgerufen, wenn eine dynamische Ausnahmespezifikation verletzt wird: Eine Ausnahme wird von einer Funktion geworfen, deren Ausnahmespezifikation Ausnahmen dieses Typs verbietet.

std::unexpected() kann auch direkt vom Programm aufgerufen werden.

In beiden Fällen std::unexpected ruft den derzeit installierten std::unexpected_handler. Der Standard-std::unexpected_handler ruft std::terminate.

Wenn ein Destruktor den unexpected-Handler während der Stapelentwicklung zurücksetzt und die Entwicklung später dazu führte, dass unexpected aufgerufen wurde, wird der Handler aufgerufen, der am Ende des throw-Ausdrucks installiert war (Anmerkung: Es war unklar, ob ein erneutes Werfen die neuen Handler anwendete).

(bis C++11)

Wenn ein Destruktor den unexpected-Handler während der Stapelentwicklung zurücksetzt, ist es unspezifiziert, welcher Handler aufgerufen wird, wenn die Entwicklung später dazu führte, dass unexpected aufgerufen wurde.

(seit C++11)

Exceptions

Wirf jede Ausnahme, die vom derzeit installierten std::unexpected_handler geworfen wird.

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 2111 C++11 Effekt des Aufrufs von std::set_unexpected während Stack-
Unwinding unterscheidet sich von C++98 und bricht einige ABIs
als unspezifiziert festgelegt

Siehe auch

(C++23)
dargestellt als ein unerwarteter Wert
(Klassen-Template)
(deprecated in C++11) (removed in C++17)
der Typ der Funktion, die aufgerufen wird durch std::unexpected
(Typdefinition)