set_unexpected (CRT)
安装你自己的通过 unexpected 被调用的终端函数。
unexpected_function set_unexpected(
unexpected_function unexpFunction
);
参数
- unexpFunction
编写的用于替换 unexpected 的函数的指针。
返回值
返回指向由 _set_unexpected 注册的前终端函数,以便前面的函数之后可能还原。 如果以前尚未设置函数,返回值可用于还原默认行为;此值可能为 NULL。
备注
set_unexpected 函数安装 unexpFunction 作为 unexpected调用的函数。 在当前 C++异常处理实现中不使用unexpected。 unexpected_function type定义为指向用户定义的异常函数的指针,unexpFunction 返回 void 自定义 unexpFunction 函数不应返回到调用方。
typedef void ( *unexpected_function )( );
unexpected 默认调用 terminate。 通过编写您自己终止函数和通过你的函数作为它的参数来调用 set_unexpected 来更改此默认行为。 unexpected 调用指定为 set_unexpected 的参数的最后一个函数。
与通过调用set_terminate安装的自定义终端函数不同,异常可能从unexpFunction中被抛出。
在多线程环境中,每个线程都是单独维护异常函数。 每个新线程需要安装自己意外的函数。 因此,每个线程都负责自己意外处理。
在当前的 C++ 异常处理 Microsoft 实现中,unexpected 调用 terminate 默认调用,从不被异常处理的运行库调用。 调用 unexpected 而不是 terminate没有特定的优势。
所有的动态链接DLLs 或 EXEs 有单set_unexpected,即使您调用set_unexpected处理程序可能会被另一个替代,或者您用另外的DLL 或 EXE替代处理程序。
要求
例程 |
必需的标头 |
---|---|
set_unexpected |
<eh.h> |
有关其他兼容性信息,请参见“简介”中的兼容性。
.NET Framework 等效项
不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见平台调用示例。