16,473
社区成员
发帖
与我相关
我的任务
分享
#ifndef __UNHANDLED_EXCEPTION_FILTER_H
#define __UNHANDLED_EXCEPTION_FILTER_H
class UnHandledExceptionFilter
{
public:
UnHandledExceptionFilter()
{
}
~UnHandledExceptionFilter()
{
::SetUnhandledExceptionFilter(NULL);
}
static void Install()
{
::SetUnhandledExceptionFilter(MyHandledExceptionFilter);
}
private:
UnHandledExceptionFilter(const UnHandledExceptionFilter &);
UnHandledExceptionFilter &operator=(const UnHandledExceptionFilter &);
public:
static LONG WINAPI MyHandledExceptionFilter(PEXCEPTION_POINTERS pExceptionInfo)
{
DWORD dwExceptionCode = pExceptionInfo->ExceptionRecord->ExceptionCode;
switch( dwExceptionCode )
{
case EXCEPTION_ACCESS_VIOLATION:
MessageBox(NULL, _T("EXCEPTION_ACCESS_VIOLATION"), NULL, MB_OK);
break;
case EXCEPTION_DATATYPE_MISALIGNMENT:
break;
case EXCEPTION_BREAKPOINT:
break;
default:
break;
}
MessageBox(NULL, _T("Catch a EXCEPTION"), NULL, MB_OK);
return EXCEPTION_EXECUTE_HANDLER;
}
//static UnHandledExceptionFilter m_Single;
};
//UnHandledExceptionFilter UnHandledExceptionFilter::m_Single;
#endif