std::unexpected

来自cppreference.com
< cpp‎ | error
 
 
工具库
类型支持(基本类型、 RTTI 、类型特性)
动态内存管理
错误处理
程序工具
变参数函数
日期和时间
函数对象
(C++11)
关系运算符
optionalanyvariant (C++17)
pair 与 tuple
(C++11)
(C++17)
swap 、 forward 与 move
(C++14)
(C++11)
(C++11)
初等字符串转换
(C++17)
(C++17)
类型运算
(C++11)
(C++17)
 
 
定义于头文件 <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_handler 且之后的回溯导致调用 unexpected ,则将调用于 throw 表达式结尾安装的处理函数。(注意:重抛出是否应用新的处理函数是有歧义的)

(C++11 前)

若析构函数在栈回溯期间重置 unexpected_handler ,则若之后的回溯导致调用 unexpected ,则调用哪个处理函数是未指定的。

(C++11 起)


目录

[编辑] 参数

(无)

[编辑] 返回值

(无)

[编辑] 异常

抛出当前安装的 std::unexpected_handler 所抛的异常

[编辑] 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

DR 应用于 出版时的行为 正确行为
LWG 2111 C++11 在栈回溯期间调用 set_unexpected 的效果异于 C++98 并破坏一些 ABI 令它未指定

[编辑] 参阅

std::unexpected 所调用的函数类型
(typedef) [编辑]