命名空间
变体
操作

std::unexpected_handler

来自 cppreference.cn
< cpp‎ | error
定义于头文件 <exception>
typedef void ( *unexpected_handler )();
(在 C++11 中弃用)
(在 C++17 中移除)

std::unexpected_handler 是函数指针类型(指向不接受任何参数并返回 void 的函数的指针),它由函数 std::set_unexpectedstd::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++11 中弃用)(在 C++17 中移除)
当动态异常规范被违反时调用的函数
(函数) [编辑]
(在 C++11 中弃用)(在 C++17 中移除)
更改由 std::unexpected 调用的函数
(函数) [编辑]
(在 C++11 中弃用)(在 C++17 中移除)
获取当前的 unexpected_handler
(函数) [编辑]