在MFC應用程序中,放置最頂端的try/catch的位置?在MFC應用程序中,放置最頂端的try/catch的位置?
我有一個MFC應用程序,我想捕獲所有異常並顯示我自己的消息框。
這是我最頂層try/catch塊的想法:
try
{
// What enclose here? Or, where to put this try/catch block?
}
catch(const std::exception& e)
{
::MessageBox(0,e.what(),"I do not know hot to handle this exception, I will terminate",MB_OK);
}
catch(...)
{
::MessageBox(0,"Unknown Excpetion","I do not know hot to handle this exception, I will terminate",MB_OK);
}
::TerminateProcess(::GetCurrentProcess(), -1);
但是,我在哪裏可以把塊?我使用Visual Studio 2010創建了一個基於MFC對話框的應用程序,並將其編譯爲版本x64,我在Windows 7上。 我在OnTimer
方法中拋出了std::exception
(將字符串傳遞給構造函數),並且沒有獲得塊通過csrss.exe
與此一般性消息
創建的消息框「中的未知軟件異常(0x40000015)在 應用發生在位置0x5dff61c9。」
「單擊確定以終止程序」
「點擊取消來調試程序」
消息框不報告我連接到異常的字符串,所以它不是非常有用。 我想我得到的消息框而不是一個花哨的TaskDialog,因爲我禁用了Windows錯誤報告服務並重命名WerFault.exe。
也許我必須忘記我自己的消息框,我需要擁抱新的Windows錯誤報告?
嗨,這是唯一的調用,如果一個CException變得無法處理?有沒有辦法爲用戶定義的異常類提供類似的行爲? 謝謝! – NHDaly 2013-11-26 22:08:38
任何繼承CException的未處理的異常都將在'ProcessWndProcException'中處理。很容易在代碼中測試它。 – 2013-11-26 22:45:35
好的,謝謝。 (是的,我很抱歉;我現在不在Windows機器上)。但是,你是否知道如何能夠提供相同的行爲,但是對於用戶定義的異常類? 謝謝! – NHDaly 2013-11-26 22:53:32