Namespaces
Variants

std:: unexpected

From cppreference.net
Definiert im Header <exception>
void unexpected ( ) ;
(bis C++11)
[ [ noreturn ] ] void unexpected ( ) ;
(veraltet in C++11)
(entfernt in C++17)

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 aus aufgerufen werden.

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

Wenn ein Destruktor den unexpected-Handler während Stack-Unwinding zurücksetzt und das Unwinding später dazu führt, dass unexpected aufgerufen wird, ist der Handler, der am Ende des throw-Ausdrucks installiert wurde, derjenige, der aufgerufen wird (Anmerkung: es war unklar, ob erneutes Werfen die neuen Handler anwendete).

(bis C++11)

Wenn ein Destruktor den unexpected-Handler während Stack-Unwinding zurücksetzt, ist nicht spezifiziert, welcher Handler aufgerufen wird, wenn das Unwinding später dazu führt, dass unexpected aufgerufen wird.

(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)