Namensräume
Varianten
Aktionen

std::unexpected

Von cppreference.com
< cpp‎ | error
 
 
 
Definiert in Header <exception>
void unexpected();
(bis C++11)
[[noreturn]] void unexpected();
(in C++11 veraltet)
(removed in C++17)

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

std::unexpected() kann auch direkt aus dem Programm 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 unerwarteten Handler während des Stack-Unwinding zurückgesetzt hat und das Unwinding später dazu führte, dass unexpected aufgerufen wurde, wird der Handler aufgerufen, der am Ende des Throw-Ausdrucks installiert wurde (Hinweis: Es war unklar, ob das erneute Auslösen die neuen Handler anwendete).

(bis C++11)

Wenn ein Destruktor den unerwarteten Handler während des Stack-Unwinding zurückgesetzt hat, ist es nicht spezifiziert, welcher Handler aufgerufen wird, wenn das Unwinding später dazu führte, dass unexpected aufgerufen wurde.

(seit C++11)

[edit] Ausnahmen

Löst jede Ausnahme aus, die vom aktuell installierten std::unexpected_handler ausgelöst wird.

[edit] Fehlerberichte

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

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 2111 C++11 Auswirkung des Aufrufs von std::set_unexpected während des Stack-
Unwinding unterscheidet sich von C++98 und bricht einige ABIs
wurde nicht spezifiziert

[edit] Siehe auch

als unerwarteter Wert dargestellt
(Klassenschablone) [bearbeiten]
(in C++11 veraltet)(in C++17 entfernt)
der Typ der Funktion, die von std::unexpected aufgerufen wird
(Typedef) [bearbeiten]