Namespaces
Variants

std:: unexpected

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

(до C++11)

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

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

Исключения

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

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

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

DR Applied to Behavior as published Correct behavior
LWG 2111 C++11 effect of calling std::set_unexpected during stack
unwinding differs from C++98 and breaks some ABIs
made unspecified

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

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