Spec-Zone.ru › C++

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 во время разматывания стека, и разматывание привело к вызову unexpected, будет вызван обработчик, который был установлен в конце выражения throw (примечание: было неоднозначно, применяется ли новое поведение при повторном выбрасывании).

(до C++11)

Если деструктор сбросил обработчик unexpected во время разматывания стека, поведение, при вызове unexpected после разматывания стека, не определено.

(с C++11)

Параметры

(нет)

Возвращаемое значение

(нет)

Исключения

Выбрасывает любое исключение, сгенерированное текущим установленным std::unexpected_handler.

Отчеты об ошибках

Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применен к Поведение, как опубликовано Корректное поведение
LWG 2111 C++11 эффект вызова set_unexpected во время разматывания стека отличается от C++98 и нарушает некоторые ABI сделано неопределенным

См. также

unexpected
(C++23)
представлено как неожиданное значение
(шаблон класса)
unexpected_handler
(удалено в 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API