std::unexpected
来自 cppreference.cn
定义于头文件 <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 handler,并且展开稍后导致调用 |
(直到 C++11) |
如果析构函数在栈展开期间重置了 unexpected handler,则如果展开稍后导致调用 |
(自 C++11 起) |
[编辑] 异常
抛出当前安装的 std::unexpected_handler 抛出的任何异常。
[编辑] 缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 已发布行为 | 正确行为 |
---|---|---|---|
LWG 2111 | C++11 | 在栈中调用 std::set_unexpected 的效果 展开与 C++98 不同,并破坏了一些 ABI |
设为未指定 |
[编辑] 参见
(C++23) |
表示为 unexpected 值 (类模板) |
(在 C++11 中弃用)(在 C++17 中移除) |
由 std::unexpected 调用的函数的类型 (类型定义) |