在线文档教程
C++
应用 | Utilities

std::unexpected_handler

STD::出乎意料[医]处理程序

Defined in header
typedef void (*unexpected_handler)((until C++17) (deprecated since C++11)

std::unexpected_handler函数指针类型%28指向函数,它不带参数并返回void%29,函数将安装并查询该函数。std::set_unexpectedstd::get_unexpected并被std::unexpected...

C++实现提供了一个默认的std::unexpected_handler函数,它调用std::terminate()。如果空指针值安装为%28,则使用std::set_unexpected%29,则实现可以还原默认处理程序。

用户定义的std::unexpected_handler将终止程序或抛出异常。如果抛出异常,可能会遇到以下三种情况之一:

1%29std::unexpected_handler满足之前违反的动态异常规范。允许新异常转义函数,堆栈展开继续进行。

2%29std::unexpected_handler仍然违反异常规范:

但是,异常规范允许std::bad_exception*已抛出的异常对象被销毁,并且std::bad_exception由C++运行时构造并抛出。

2B%29异常规范不允许std::bad_exception*std::terminate()叫做。

另见

unexpected (until C++17)function called when dynamic exception specification is violated (function)
set_unexpected (until C++17)changes the function to be called by std::unexpected (function)
get_unexpected (C++11)(until C++17)obtains the current unexpected_handler (function)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cpPreference.com/w/cpp/Error/意外[医]处理程序