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。有关更多信息,请参见平台调用示例

请参见

参考

异常处理例程

abort

_get_unexpected

set_terminate (CRT)

terminate (CRT)

unexpected (CRT)