◐ Shell
clean mode source ↗

std::unexpected — cppreference.com

Материал из cppreference.com

<tbody> </tbody> <tbody class="t-dcl-rev "> </tbody><tbody> </tbody>

Определено в заголовочном файле <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 (примечание: было неоднозначно, применялась ли повторная генерация обработчиками new).

(до C++11)

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

(начиная с C++11)

Параметры

(нет)

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

(нет)

Исключения

Генерирует любое исключение, созданное установленным в данный момент std::unexpected_handler.

Отчёты о дефектах

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

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

Смотрите также