std::unexpected_handler

来自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>
typedef void (*unexpected_handler)();
(C++11 中弃用)
(C++17 中移除)

std::unexpected_handler 是函数指针类型(指向不接收参数并返回 void 的函数),它为函数 std::set_unexpected 所安装,为 std::get_unexpected 所查询,并为 std::unexpected 所调用。

C++ 实现提供默认的 std::unexpected_handler 函数,它调用 std::terminate() 。若安装空指针值(用 std::set_unexpected ),则实现可以替代地恢复默认处理函数。

期待用户定义的 std::unexpected_handler 终止程序或抛出异常。若它抛出异常,则可能遇到下列三种情况之一:

1) std::unexpected_handler 所抛的异常满足之前被违背的动态异常规定。则允许新异常逃出函数并继续栈回溯。

2) std::unexpected_handler 所抛的异常仍然违背动态异常规定:

2a) 然而,异常规定允许 std::bad_exception : C++ 运行时销毁抛出的异常对象,并构造 std::bad_exception 替代地抛出。

2b) 异常规定不允许 std::bad_exception :调用 std::terminate()

[编辑] 参阅

(C++17 前)
违背动态异常规定时调用的函数
(函数) [编辑]
(C++17 前)
更改要被 std::unexpected 调用的函数
(函数) [编辑]
(C++11)(C++17 前)
获得当前的 unexpected_handler
(函数) [编辑]