vc2012 异常捕获并处理
2015-08-12 00:20
239 查看
在处理大量数据的程序中,对于缓冲区处理稍有不慎,程序崩溃,然而在实际的使用中,我们的程序在发生错误之后不能停留在崩溃的界面上,必须立刻停止显示错误信息,重新启动程序。我本人也是长期未注意这个问题,始终抱着错误发生了那就研究一下错误码,但是未考虑程序不能停下来的问题。
程序由于缓冲区溢出而产生的系统错误提示只是使得错误的线程发生暂停而其它线程依然正常运行,那么这种情况下如果是服务器,那么我们所提供的服务即将终止,那么我们如何解决这个问题。SEH,异常捕获。在多次的测试中需将编译设置的启用c++异常处理选项设置为HSA。其余如下
使用如下函数hook系统的错误提示函数,参数为异常处理指针。
SetUnhandledExceptionFilter(MyUnhandledExceptionFilter);
LONG WINAPI MyUnhandledExceptionFilter(struct _EXCEPTION_POINTERS *pExceptionPointers)
{
SetErrorMode( SEM_NOGPFAULTERRORBOX );
char szPath[MAX_PATH]="";
::GetModuleFileNameA(NULL,szPath,MAX_PATH);
char szDirect[MAX_PATH]="";
::AfxMessageBox("错误提示!\r\bThis error warning test!");
//::GetCurrentDirectoryA(MAX_PATH,szDirect);
//::ShellExecuteA(NULL,"open",szPath,NULL,szDirect,SW_NORMAL);
::exit(-1);
return EXCEPTION_CONTINUE_SEARCH; //或者 EXCEPTION_EXECUTE_HANDLER 关闭程序
}
程序由于缓冲区溢出而产生的系统错误提示只是使得错误的线程发生暂停而其它线程依然正常运行,那么这种情况下如果是服务器,那么我们所提供的服务即将终止,那么我们如何解决这个问题。SEH,异常捕获。在多次的测试中需将编译设置的启用c++异常处理选项设置为HSA。其余如下
使用如下函数hook系统的错误提示函数,参数为异常处理指针。
SetUnhandledExceptionFilter(MyUnhandledExceptionFilter);
LONG WINAPI MyUnhandledExceptionFilter(struct _EXCEPTION_POINTERS *pExceptionPointers)
{
SetErrorMode( SEM_NOGPFAULTERRORBOX );
char szPath[MAX_PATH]="";
::GetModuleFileNameA(NULL,szPath,MAX_PATH);
char szDirect[MAX_PATH]="";
::AfxMessageBox("错误提示!\r\bThis error warning test!");
//::GetCurrentDirectoryA(MAX_PATH,szDirect);
//::ShellExecuteA(NULL,"open",szPath,NULL,szDirect,SW_NORMAL);
::exit(-1);
return EXCEPTION_CONTINUE_SEARCH; //或者 EXCEPTION_EXECUTE_HANDLER 关闭程序
}
相关文章推荐
- 文件加密(一) 凯撒加密(Caesar cipher)
- Root(hdu5777+扩展欧几里得+原根)
- 字符编码
- hdoj-1232 畅通工程【并查集】
- ListView item过多 造成视图超出界面 解决
- 为什么pyspider+mongodb只存了一部分数据到数据库,而其他大量数据并没有写入数据库!
- 使用phpStudy在Windows下搭建moodle测试学习环境
- Cookie详解
- hdu 4287 Intelligent IME
- Codeforces #315 DIV2
- 设计模式-创建型之抽象工厂模式
- 学生管理系统项目演示
- 数据结构之---C语言实现最小生成树之prim(普里姆)算法
- 希尔排序(简单)
- 关于DLL导出函数的总结
- codeforces 538 A Cutting Banner
- iOS项目开发实战——使用异步请求获取网页HTML源代码
- 2015-08-10-----2015-08-11
- hdoj 4309 Seikimatsu Occult Tonneru 【最大流 + 状压枚举二进制】
- 打电话,发短信,发邮件,app跳转