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:抛出的异常对象被销毁,并且 std::bad_exception 由 C++ 运行时构造并被抛出。
2b) 异常规范不允许 std::bad_exception:std::terminate() 被调用。
[编辑] 参见
(在 C++11 中弃用)(在 C++17 中移除) |
当动态异常规范被违反时调用的函数 (函数) |
(在 C++11 中弃用)(在 C++17 中移除) |
更改由 std::unexpected 调用的函数 (函数) |
(在 C++11 中弃用)(在 C++17 中移除) |
获取当前的 unexpected_handler (函数) |