std::unexpected_handler
来自cppreference.com
在标头 <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 (函数) |