我有一个Visual Studio2008SEHWindowsMobile6.5项目,我想在其中捕获C++异常,将它们写到一个文件中,并为用户提供关于如何记录此问题的缺陷报告的具体说明。我的代码看起来很像这样:
static int WriteDump( struct _EXCEPTION_POINTERS* ep )
{
// code to write info to a file
return EXCEPTION_EXECUTE_HANDLER;
}
int WINAPI _tWinMain( HINSTANCE hInstance,
HINSTANCE /*hPrevInstance*/,
LPTSTR lpstrCmdLine,
int nCmdShow )
{
int result = 0;
__try
{
result = StartMyGuiApp( hInstance, lpstrCmdLine, nCmdShow );
}
__except( WriteDump( GetExceptionInformation() ) )
{
// empty
}
return 0;
}如果SEH异常是从主线程抛出的,则可以很好地工作。但是,如果图形用户界面代码中有异常(例如WM_CREATE处理程序),那么通常的“对不起...”对话框出现,错误处理代码永远不会执行。
我能做些什么来捕获这些异常?在C# .NET CF中,我会订阅Application.ThreadException和Application.CurrentDomain.UnhandledException。为了这个。有没有C++的等价物?
谢谢,PaulH
发布于 2011-04-06 11:02:01
窗口过程通常是间接调用的,库可能会通过在回调函数周围插入SEH异常块来保护自己,屏蔽错误并阻止它向上传播调用堆栈并返回到WinMain()。
在窗口过程中添加SEH异常块,以捕获事件处理程序中发生的任何异常。
https://stackoverflow.com/questions/5558793
复制相似问题