Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 实时服务器中的致命错误_Language Agnostic_Error Handling_Client Server - Fatal编程技术网

Language agnostic 实时服务器中的致命错误

Language agnostic 实时服务器中的致命错误,language-agnostic,error-handling,client-server,Language Agnostic,Error Handling,Client Server,我正在编写一些客户机/服务器软件,我面临以下设计问题。通常,我非常自由地使用VERIFY宏-如果用户的机器出现问题,我希望软件失败并记录错误,以便修复。我从不喜欢忽视任何错误 然而,我现在正在编写一个服务器。如果服务器死机,许多客户机将停机,因此服务器应尽可能少死机。因此,我不知道如何处理一些我会视为致命例外的情况 例如,我从一个未登录的用户那里得到一个网络数据包。即使它不应该发生,我有足够的经验知道“不可能”的错误确实时常发生。所以我很确定如果我在这些情况下犯了致命错误,服务器最终会崩溃。另一

我正在编写一些客户机/服务器软件,我面临以下设计问题。通常,我非常自由地使用VERIFY宏-如果用户的机器出现问题,我希望软件失败并记录错误,以便修复。我从不喜欢忽视任何错误

然而,我现在正在编写一个服务器。如果服务器死机,许多客户机将停机,因此服务器应尽可能少死机。因此,我不知道如何处理一些我会视为致命例外的情况

例如,我从一个未登录的用户那里得到一个网络数据包。即使它不应该发生,我有足够的经验知道“不可能”的错误确实时常发生。所以我很确定如果我在这些情况下犯了致命错误,服务器最终会崩溃。另一方面,我可以记录并忽略错误,然后继续,但我担心某些bug可能会以这种方式未被发现


在这种情况下你会怎么做?

如果你能从错误中恢复过来,那么显然这不是致命的。如果您可以记录错误并继续执行,我看不到失败的好处-最重要的是您已经在日志中捕获了错误。如果你能恢复并继续正常运作,那就是最好的办法

此外,您还应该实现一个通知系统(),根据错误级别,它会以不同的紧急程度通知您,以便您能够尽快处理一些时间关键的问题。对于服务器,如和,有类似的通用系统。你应该看看他们做了什么,看看你是否可以从他们那里得到一些东西,并将其实现/集成到你的系统中

无论如何,您应该尝试确保客户端实例尽可能地沙盒化。一个客户端线程崩溃不应该导致整个服务器崩溃(至少在理论上)