std::unexpected
| 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 |
(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 |
(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
| (C++23) |
als unerwarteter Wert dargestellt (Klassenschablone) |
| (in C++11 veraltet)(in C++17 entfernt) |
der Typ der Funktion, die von std::unexpected aufgerufen wird (Typedef) |