SetUnhandledExceptionFilter让程序优雅的崩溃(转)
2016-05-24 10:17
267 查看
虽然是大公司的产品,QQ它还是会在我们的折腾下崩溃的,但是它总是崩溃的很优雅,还要弹出自己的对话框来结束。并且发送报告,去掉了系统默认的发送报告的对话框。
所以一拍脑袋,想让自己的程序崩溃的体面一点。
自己想了大概的思路,觉得可以用一个进程来监控目标程序。的确也可以拿到了目标程序崩溃的信息,知道它什么时候崩溃的,也可以做额外的操作,但是这样是没办法把默认的发送错误的对话框去掉的。
然后又有人说是不是采用了类似钩子的方法把这个东西在哪里勾掉了。
最后网上查了一番,发现SetUnhandledExceptionFilter这个函数解决了一切。
总结了下搜到的资料,这个函数的返回值有三种情况:
EXCEPTION_EXECUTE_HANDLER equ 1 表示我已经处理了异常,可以优雅地结束了
EXCEPTION_CONTINUE_SEARCH equ 0 表示我不处理,其他人来吧,于是windows调用默认的处理程序显示一个错误框,并结束
EXCEPTION_CONTINUE_EXECUTION equ -1 表示错误已经被修复,请从异常发生处继续执行
具体使用方法如下:
#include
所以一拍脑袋,想让自己的程序崩溃的体面一点。
自己想了大概的思路,觉得可以用一个进程来监控目标程序。的确也可以拿到了目标程序崩溃的信息,知道它什么时候崩溃的,也可以做额外的操作,但是这样是没办法把默认的发送错误的对话框去掉的。
然后又有人说是不是采用了类似钩子的方法把这个东西在哪里勾掉了。
最后网上查了一番,发现SetUnhandledExceptionFilter这个函数解决了一切。
总结了下搜到的资料,这个函数的返回值有三种情况:
EXCEPTION_EXECUTE_HANDLER equ 1 表示我已经处理了异常,可以优雅地结束了
EXCEPTION_CONTINUE_SEARCH equ 0 表示我不处理,其他人来吧,于是windows调用默认的处理程序显示一个错误框,并结束
EXCEPTION_CONTINUE_EXECUTION equ -1 表示错误已经被修复,请从异常发生处继续执行
具体使用方法如下:
#include
相关文章推荐
- http://www.zhihu.com/question/24301047
- CodeForces - 427A (警察和罪犯 思维题)
- CodeForces - 426B(对称图形)
- select、poll、epoll之间的区别总结(转)
- 被释放遇到的Crash message sent to deallocated instance
- CodeForces - 426A(排序)
- Codeforces 424C(异或)
- HDU 2686 Matrix||HDU 3376 Matrix Again (拆点费用流)
- 某单位“高质量软件需求工程”内训圆满结束!
- CodeForces - 424B (贪心算法)
- Codeforces 424A (思维题)
- 辗转相除法的证明
- session 、cookie、token的区别
- CodeForces - 420A (字符对称问题)
- 以前在网络相关的公司学到的,记录一下,http协议和https协议的区别
- CodeForces - 417E(随机数)
- CodeForces - 417B (思维题)
- CodeForces - 417A(思维题)
- 属性访问函数
- CodeForces - 416A (判断大于小于等于 模拟题)