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
.
|
Если деструктор сбрасывает обработчик неожиданных исключений во время раскрутки стека и раскрутка позже приводит к вызову
|
(до C++11) |
|
Если деструктор сбрасывает обработчик неожиданных исключений во время раскрутки стека, то не определено, какой обработчик будет вызван, если раскрутка позже приведет к вызову
|
(начиная с 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
(определение типа) |