我试图在我的过程中捕获所有意外终止。
我已经使用这些函数来捕获我能想到的所有未处理的错误和异常,但这仍然不够:
SetUnhandledExceptionFilter(OnUnhandledNativeException);
set_terminate(set_terminateHandler);
set_unexpected(set_unexpectedHandler);
_set_purecall_handler(set_purecallHandler);
_set_new_handler(HandleProgramMemoryDepletion);
_set_invalid_parameter_handler(InvalidParameterHandler);
signal(SIGABRT, sigabrt_handler);
signal(SIGINT, sigabrt_handler);
signal(SIGTERM , sigabrt_handler);
这些函数几乎可以捕获应用程序中的任何错误。
但是,当应用程序由于 GDI 故障(例如 GDI 资源不足)而终止时,不会调用这些函数。
有谁知道我如何捕捉 GDI 错误事件?
我确信必须有某种方法来重载它并更改回调函数。
而且,有没有人知道这些功能还不够的其他奇怪场景?
注:
它没有捕获的确切错误是“所需资源不可用”。
这是当您创建大量 GDI 对象并且不释放它们时引起的。
该程序将崩溃,因为在内存耗尽之前没有足够的资源。
最佳答案
关于c++ - 在 GDI 资源不足时以编程方式捕获 Windows 关闭事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7702343/