std:: unexpected
|
定义于头文件
<exception>
|
||
|
void
unexpected
(
)
;
|
(C++11 前) | |
|
[
[
noreturn
]
]
void
unexpected
(
)
;
|
(C++11 起弃用)
(C++17 中移除) |
|
当违反
动态异常规范
时,C++运行时会调用
std::unexpected()
:从函数中抛出了该函数异常规范所禁止的异常类型。
std::unexpected()
也可以直接从程序中调用。
无论哪种情况,
std::unexpected
都会调用当前安装的
std::unexpected_handler
。默认的
std::unexpected_handler
会调用
std::terminate
。
|
若析构函数在栈回溯期间重置了unexpected处理器,且该回溯后续导致调用
|
(C++11 前) |
|
若析构函数在栈回溯期间重置了unexpected处理器,且该回溯后续导致调用
|
(C++11 起) |
异常
抛出当前安装的 std::unexpected_handler 所抛出的任何异常。
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用范围 | 发布时的行为 | 正确行为 |
|---|---|---|---|
| LWG 2111 | C++11 |
在栈展开期间调用
std::set_unexpected
的效果
与 C++98 不同且破坏某些 ABI |
改为未指定 |
参阅
|
(C++23)
|
表示意外值的包装器
(类模板) |
|
(C++11 中弃用)
(C++17 中移除)
|
被
std::unexpected
调用的函数类型
(类型别名) |