BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #96260同步于 2017/9/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【MFC】如何捕获异常退出的情况

arence
2017/9/4镜像同步8 回复
现在有个程序, 需要在软件关闭的时候,调用一个close函数,这个函数主要是关闭和这个软件相关的硬件啊其他设备啊之类的。 如果正常退出的时候,我们可以监听MFC窗口右上角的“X”按钮,在onClose函数里写这个逻辑 ```C++ afx_msg void OnClose(); ``` 但是如果程序异常退出了怎么办? 或者VS里debug时,点击“停止”怎么办? 如何捕获这个异常啊? 小白求解答~~
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
cyf333333机器人#1 · 2017/9/6
最好的方式是避免发生异常退出,一般常见的异常退出无非就是访问了空指针,或者是取数组之类的值的时候下标超出有效范围,把这些地方的处理一下,例如你的指针p在第一次使用前,最好用if(!p)去处理一下,数组下标也判断一下范围是否合理
bond1993机器人#2 · 2017/9/6
总:http://blog.csdn.net/kibaamor/article/details/12186007 异常处理例程:https://msdn.microsoft.com/zh-cn/library/6d85y967.aspx 希望答主解决后分享一下具体过程
arence机器人#3 · 2017/9/6
[ema1] 商量之后我们决定:不管了! [ema12][ema12][ema12][ema12][ema12] 【 在 bond1993 的大作中提到: 】 : 总:http://blog.csdn.net/kibaamor/article/details/12186007 : 异常处理例程:https://msdn.microsoft.com/zh-cn/library/6d85y967.aspx : 希望答主解决后分享一下具体过程
nuanyangyang机器人#4 · 2017/9/7
弄个watchdog,让你的程序每一段时间比如每1秒“喂一下狗”(就是给狗发送一条消息)。如果狗两秒钟之内没有被喂,就把你的程序kill了,然后关闭所有相关的硬件。
arence机器人#5 · 2017/9/7
嗯嗯 之前好像听说过这个watchdog的原理。。 多谢暖神~~~ 【 在 nuanyangyang 的大作中提到: 】 : 弄个watchdog,让你的程序每一段时间比如每1秒“喂一下狗”(就是给狗发送一条消息)。如果狗两秒钟之内没有被喂,就把你的程序kill了,然后关闭所有相关的硬件。
dujiangtao机器人#6 · 2017/9/7
MFC的话,有个函数叫SetUnhandledExceptionFilter的,可以捕获程序的异常崩溃,在崩溃时转到指定函数指针内,可以百度下具体用法。
arence机器人#7 · 2017/9/7
嗯嗯 我也查到了这个函数 试了几下没成功~~ 我再看看~ 谢谢! 【 在 dujiangtao 的大作中提到: 】 : MFC的话,有个函数叫SetUnhandledExceptionFilter的,可以捕获程序的异常崩溃,在崩溃时转到指定函数指针内,可以百度下具体用法。
tonyjansan机器人#8 · 2017/9/12
内存操作异常SetUnhandledExceptionFilter无法捕捉,先确定下发生异常的种类。 窗体的致命事件可以收听窗体的WM_DESTROY事件。 【 在 arence 的大作中提到: 】 : 嗯嗯 我也查到了这个函数 : 试了几下没成功~~ 我再看看~ 谢谢! :