В приложении MFC, куда поместить самую верхнюю попытку / улов?
У меня есть приложение 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 );
Но где я могу разместить блок?Я создал приложение на основе диалогового окна MFC с Visual Studio 2010 и скомпилировал его в Выпуске x64, я в Windows 7. Я выбрасываю std::exception
(передавая строку в конструктор) в методе OnTimer
и без блока Iполучить окно сообщения, созданное csrss.exe
с этим общим сообщением
"Исключение неизвестного программного обеспечения (0x40000015) возникло в приложении в расположении 0x5dff61c9."
"Нажмите кнопку ОКчтобы завершить программу "
" Нажмите ОТМЕНА для отладки программы "
В окне сообщения не отображается строка, которую я прикрепил к исключению, и поэтому она не так полезна.Я думаю, что получаю окно сообщения вместо причудливого TaskDialog, потому что я отключил службу отчетов об ошибках Windows и переименовал WerFault.exe.
Может быть, я должен забыть свое собственное окно сообщения, и мне нужно принять новую WindowsСообщение об ошибке?