Spec-Zone.ru › C++

std::unexpected

Определён в заголовочном файле <exception>
void unexpected();
(до C++11)
[[noreturn]] void unexpected();
(начиная с C++11)
(до C++17)
(устарело в C++11)

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 эффект вызова std::set_unexpected во время раскрутки
стека отличается от C++98 и нарушает работу некоторых ABI
сделано неопределённым

См. также

unexpected
(C++23)
представлено как неожиданное значение
(шаблон класса)
unexpected_handler
(устарело в C++11)(удалено в C++17)
тип функции, вызываемой std::unexpected
(определение типа)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/error/unexpected

Spec-Zone.ru

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