本文 http://blogs.msdn.com/larryosterman/archive/2004/09/10/228068.aspx很好地概述了为什么结构化异常处理不好。有没有一种方法可以在克服文章中提到的问题的同时,获得阻止服务器崩溃的稳健性?
我有一个服务器软件,可以同时运行大约 400 个连接的用户。但如果发生崩溃,所有 400 个用户都会受到影响。我们添加了结构化异常处理并享受了一段时间的结果,但最终不得不删除它,因为一些崩溃导致整个服务器挂起(这比仅仅崩溃并重新启动更糟糕)。
所以我们有这个:
- 使用 SEH:400 名用户中只有 1 名用户遇到大多数崩溃问题
- 没有 SEH:如果任何用户崩溃,所有 400 个用户都会受到影响。
- 但有时使用 SEH:服务器挂起,所有 400 台服务器以及未来尝试连接的用户都会受到影响。
因为程序随机崩溃而使用 SEH 是一个坏主意。这不是你可以撒在程序上以使其停止崩溃的魔法仙尘。追踪并修复导致崩溃的错误是正确的解决方案。
当您确实需要处理结构化异常时,使用 SEH 就可以了。拉里·奥斯特曼(Larry Osterman)发表了后续帖子解释什么情况需要SEH:内存映射文件、RPC和安全边界转换 http://blogs.msdn.com/larryosterman/archive/2006/10/16/so-when-is-it-ok-to-use-seh.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)