异常安全的服务器

时间:2017-11-10 18:40:39

标签: c++ exception server

我正在构建一个c ++服务器库,该库的用户将实现对客户端的响应。如果程序在响应实现中遇到任何运行时错误,服务器不应该退出,它应该只关闭线程/连接。

我发现了两种方法。

  1. 使用线程并使用__try __except来捕获异常,例如访问冲突 - 关闭线程。

  2. 为每个连接启动一个新进程。如果不重新加载进程,客户端的响应时间将更长,并将使用更多的RAM。

  3. 我主要对第一种选择感兴趣,但不推荐在我读过的任何论坛或论文中。 重点是使服务器稳定并永不终止。

    我应该使用什么选项?

1 个答案:

答案 0 :(得分:1)

  

库的用户将实现对客户端的响应。如果程序在响应实现中遇到任何运行时错误

如果你没有控制100%正在执行的代码,那么进行多进程是唯一的方法,使其稳定。

抓住任何“崩溃”的SEH例外是一项脆弱的业务。代码可能有错误,不会导致任何异常,但只是覆盖内存,以后你会得到一些错误的行为。

你仍然可以捕获这些异常,但是一旦你遇到这些异常,你就应该终止这个过程,因为你不知道在进程状态中还有什么搞砸了。 (更好的方法可能实际上是不捕获它们,只是让进程终止,让你有机会收集崩溃转储。)