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++:
| Номер | Применён | Поведение в стандарте | Корректное поведение |
|---|---|---|---|
| LWG 2111 | C++11 | эффект от вызова set_unexpected во время раскручивания стекаотличается от C++98 и нарушает работу некоторых ABI |
сделано неуказанным |
Смотрите также
(C++23) |
представлен как неожидаемое значение (шаблон класса) |
(удалено в C++17) |
тип функции, вызываемой из std::unexpected (определение типа) |