本文很好地概述了为什么结构化异常处理不好。有没有办法获得阻止服务器崩溃的稳健性,同时克服文章中提到的问题?
我有一个服务器软件,可以同时运行大约 400 个连接的用户。但如果发生崩溃,所有 400 个用户都会受到影响。我们添加了结构化异常处理并享受了一段时间的结果,但最终不得不将其删除,因为一些崩溃导致整个服务器挂起(这比让它崩溃并自行重启更糟糕)。
所以我们有这个:
- 使用 SEH:400 中只有 1 个用户在大多数崩溃中遇到问题
- 没有 SEH:如果任何用户发生崩溃,所有 400 都会受到影响。
- 但有时与 SEH:服务器挂起,所有 400 都受到影响,未来的用户会尝试连接。