关于VS下面C++的异常捕获

       项目上为了应对程序异常崩溃的情况,加入了DUMP生成机制,也就是调用windows下的API SetUnhandledExceptionFilter()对未处理的异常安装了一个处理函数,在处理函数里面调用MiniDumpWriteDump()生成DUMP文件。这部分代码比较简单,但是在实际测试过程中,发现很多时候程序崩了之后并没有生成DUMP文件。在网上找了一些资料,有用的不多,当然也有很多大神的文档,譬如Matt Pietrek写的关于结构化异常的分析文章(链接:Matt Pietrek 讲解SEH的巨牛文章,留下来慢慢研究 - 认真做人,认真做事 - 博客园),这篇文章很好,里面有些东西不是短时间容易消化的,不过对于理解SEH确实是一份难得的学习资料。

     下面是我再本地对异常捕获的一点测试结果。

     在VS里面"启用C++异常"选项为"EHsc",并开启了Release编译优化的情况下:

     1. try{}...catch{}  可以捕获C++异常(也就是通过throw抛出的异常),捕获不到SEH异常

     2.__try{}...__except{} 可以捕获SEH异常,也可以捕获C++异常

    如果将"启用C++异常"选项改为"EHa",try{}...catch{}可以捕获到SEH异常

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值