sha*_*oth 6 c++ error-handling visual-studio visual-c++
时不时地强烈需要以这样一种方式编写程序,使得它永远(实际上从未)将错误消息显示为消息框.例如,它可以是在每日构建中运行的程序 - 如果它与消息框挂起,则每日构建会挂起.
不幸的是,VC++运行时有很多方法可以在指示错误时触发消息框.
首先,无论何时未处理异常,都会terminate()调用哪个调用abort()导致"此应用程序已请求运行时以异常方式终止它".消息框.这可以通过捕获所有异常和/或使用set_terminate()设置terminate()没有消息框的自定义处理程序来解决.
然后,每当异常在堆栈展开期间逃脱任何破坏者时terminate()也会调用.set_terminate()也有帮助.
然后,有一个"纯虚函数调用"消息框,在一些硬核情况下显示,这些情况与调用者所期望的函数数量和被调用者实现的函数数量不匹配._set_purecall_handler()应该在这里帮助.
还有什么办法让VC++程序绝对肯定它在某些致命的情况下不显示消息框?
我建议您使用帮助程序来启动它,并让该帮助程序限制您的程序可以运行的时间。如果可以的话,这是迄今为止最安全的方法,因为它可以处理所有情况。有些事情您无法在程序中直接处理,例如“此程序不是有效的 Win32 应用程序”,如果您缺少 DLL,则可能会发生这种情况。
| 归档时间: |
|
| 查看次数: |
475 次 |
| 最近记录: |