异常安全服务器

Exception safe server

本文关键字:服务器 安全服 安全 异常      更新时间:2023-10-16

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

我找到了两种方法。

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

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

主要对第一种选择感兴趣,但在我读过的任何论坛或论文中都不推荐它。关键是要使服务器稳定且永不终止。

我应该使用什么选项?

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

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

捕获任何"崩溃"SEH 异常是一项脆弱的业务。代码可能存在不会导致任何异常的错误,但只是覆盖内存,稍后会出现一些错误的行为。

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