我试图捕捉在我的过程中的所有意外终止。以编程方式捕捉窗口关闭事件时,GDI资源不存在
我使用这些功能来捕捉所有未处理的错误和异常,我能想到的,但仍然是不够的:
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错误事件?
我确定必须有一些方法来重载它并改变回调函数。
而且,有没有人知道任何其他奇怪的情况下,这些功能是不够的?
注:
确切的错误,它不是追赶是“A所需的资源不可用”。
这是在创建大量GDI对象并且不释放它们时引起的。
由于在内存不足之前没有足够的资源,程序会崩溃。
也许你应该修复资源泄漏? – Ferruccio
在修复问题之前,需要制作一个组件来查找问题。 –