windows 多线程捕获未处理的异常,防止崩溃的地方影响到其它线程

本文介绍了一个在Windows多线程程序中遇到的问题,即当线程A中的对象未正确初始化时,异常无法被捕获导致程序崩溃。通过在启动线程前设置未处理异常过滤器,可以确保只捕获特定线程的异常,避免全局程序崩溃。具体步骤包括设置回调函数来处理捕获的异常,例如使用AfxMessageBox显示错误信息。

一个windows程序,多线程,若有线程A、B,在线程A中有类似代码

              MyClass * pClass;

              pClass=NULL;

              pClass->GetData();

 若pClass未进行正确赋值(为NULL),则会出现异常,并且此异常try{}  catch(){} 捕获不到,

此时程序将崩溃,线程A、B都不能运行了,但是如果做相关处理,则只是A线程崩溃,B

正常运行!!


方法:

    在启动线程A、B之前调用SetUnhandleExceptionFilter函数,设置回调函数来处理捕获的异常

   如:在回调函数中调用AfxMessageBox等,即可达到上述目的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值