【问题标题】:Error handling design problem on collection of items项目集合的错误处理设计问题
【发布时间】:2011-08-15 08:30:14
【问题描述】:

我有一些项目的集合和对它们的一些操作。此操作是客户端和服务器之间远程调用的一部分,它应该同时在所有项目上运行。在服务器端,它在每个项目上重复运行,可能会失败或成功。我需要知道哪些项目成功,哪些失败。我想这是相当普遍的情况,并且有很好的解决方案。应该怎么设计?

【问题讨论】:

    标签: c++ c error-handling


    【解决方案1】:

    它应该同时在所有项目上运行

    如果您不将其视为设计要求,您将讨厌自己的生活。全有或全无是处理它的正确方法。它将简化您所做的一切。

    如果这不是一个选项,那就做最愚蠢的事情吧。将每个调用包装在 try/catch 中并给出一些报告。很可能没有人能够使用该报告,这是正确的做法的另一个原因。

    编辑:

    详细说明:批处理时,编写简单的逻辑来报告错误是可以的,但是编写逻辑来从错误中恢复是非常复杂的。我从来没有见过一个系统在批处理方面能很好地处理恢复。我敢肯定,在某些极端情况下,每个项目都是完全独立的。在这一点上,无论一个或另一个失败,但通常情况并非如此。

    一般来说,我希望批处理操作期间发生的任何错误都不是严重的。我的意思是系统应该能够忽略错误并继续运行,就好像导致错误的消息不存在一样。

    如果处理这些消息真的很重要,那么我肯定会全力以赴。

    【讨论】:

    • 我的操作可能因不同原因在多个项目上失败。在这种情况下我应该返回什么错误?如果坚持All or nothing的原则我应该返回第一个失败项的错误,对吧?
    • 取决于我猜的系统,但通常这是我的期望。当您的第一个错误时,您希望批处理中的所有操作也会回滚。
    猜你喜欢
    • 2019-12-11
    • 1970-01-01
    • 2017-11-10
    • 2014-07-31
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2010-12-09
    • 2014-02-23
    相关资源
    最近更新 更多