std::unexpected_handler

来自cppreference.com
< cpp‎ | error

 
 
 
 
定义于头文件 <exception>
typedef void (*unexpected_handler)();
(过时)
std::unexpected_handler的函数指针类型(指针到函数不带任何参数,并返回void),这是安装和查询的功能std::set_unexpectedstd::get_unexpected,并呼吁通过std::unexpected.
原文:
std::unexpected_handler is the function pointer type (pointer to function that takes no arguments and returns void), which is installed and queried by the functions std::set_unexpected and std::get_unexpected and called by std::unexpected.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
C + +的实现提供了一个默认std::unexpected_handler功能,这就要求std::terminate()。如果空指针的值是安装(手段std::set_terminate),实现可能会恢复默认的处理程序,而不是.
原文:
The C++ implementation provides a default std::unexpected_handler function, which calls std::terminate(). If the null pointer value is installed (by means of std::set_terminate), the implementation may restore the default handler instead.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
用户定义的std::unexpected_handler预计终止程序,或者抛出一个异常。如果它抛出一个异常,可能会遇到以下三种情况之一的:
原文:
A user-defined std::unexpected_handler is expected to either terminate the program or throw an exception. If it throws an exception, one of the following three situations may be encountered:
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
1)
std::unexpected_handler满足动态例外,规范,违反了新的例外是允许逃跑的功能和堆栈平仓继续
原文:
the exception thrown by std::unexpected_handler satisfies the dynamic exception specification that was violated earlier. The new exception is allowed to escape the function and stack unwinding continues.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
2)
抛出的异常的std::unexpected_handler仍然违反的异常规范
原文:
the exception thrown by std::unexpected_handler still violates the exception specification:
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
2A),但是,异常规范允许std::bad_exception:抛出的异常对象被销毁,std::bad_exception是通过C + +运行时抛出,而不是.
原文:
2a) however, the exception specification allows std::bad_exception: the thrown exception object is destroyed, and std::bad_exception is constructed by the C++ runtime and thrown instead.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
2B)的例外规范不允许std::bad_exceptionstd::terminate()被称为.
原文:
2b) the exception specification does not allow std::bad_exception: std::terminate() is called.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 另请参阅

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