我試圖捕捉在我的過程中的所有意外終止。以編程方式捕捉窗口關閉事件時,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
在修復問題之前,需要製作一個組件來查找問題。 –