std::unexpected
Определено в заголовке <exception> |
||
|---|---|---|
void unexpected(); |
(до C++11) | |
[[noreturn]] void unexpected(); |
(с C++11) (устарело) (удалено в C++17) |
std::unexpected() вызывается временем выполнения C++, когда нарушается динамическое спецификация обработки исключений: исключение выбрасывается из функции, спецификация обработки исключений которой запрещает исключения данного типа.
std::unexpected() также может быть вызван непосредственно из программы.
В любом случае, std::unexpected вызывает текущий установленный std::unexpected_handler. По умолчанию std::unexpected_handler вызывает std::terminate.
| Если деструктор сбросил обработчик unexpected во время разматывания стека, и разматывание привело к вызову |
(до C++11) |
| Если деструктор сбросил обработчик unexpected во время разматывания стека, поведение, при вызове |
(с C++11) |
Параметры
(нет)
Возвращаемое значение
(нет)
Исключения
Выбрасывает любое исключение, сгенерированное текущим установленным std::unexpected_handler.
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применен к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 2111 | C++11 | эффект вызова set_unexpected во время разматывания стека отличается от C++98 и нарушает некоторые ABI |
сделано неопределенным |
См. также
|
(C++23) |
представлено как неожиданное значение (шаблон класса) |
|
(удалено в C++17) |
тип функции, вызываемой std::unexpected (typedef) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/error/unexpected