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