【发布时间】:2011-08-15 08:30:14
【问题描述】:
我有一些项目的集合和对它们的一些操作。此操作是客户端和服务器之间远程调用的一部分,它应该同时在所有项目上运行。在服务器端,它在每个项目上重复运行,可能会失败或成功。我需要知道哪些项目成功,哪些失败。我想这是相当普遍的情况,并且有很好的解决方案。应该怎么设计?
【问题讨论】:
标签: c++ c error-handling
我有一些项目的集合和对它们的一些操作。此操作是客户端和服务器之间远程调用的一部分,它应该同时在所有项目上运行。在服务器端,它在每个项目上重复运行,可能会失败或成功。我需要知道哪些项目成功,哪些失败。我想这是相当普遍的情况,并且有很好的解决方案。应该怎么设计?
【问题讨论】:
标签: c++ c error-handling
它应该同时在所有项目上运行
如果您不将其视为设计要求,您将讨厌自己的生活。全有或全无是处理它的正确方法。它将简化您所做的一切。
如果这不是一个选项,那就做最愚蠢的事情吧。将每个调用包装在 try/catch 中并给出一些报告。很可能没有人能够使用该报告,这是正确的做法的另一个原因。
编辑:
详细说明:批处理时,编写简单的逻辑来报告错误是可以的,但是编写逻辑来从错误中恢复是非常复杂的。我从来没有见过一个系统在批处理方面能很好地处理恢复。我敢肯定,在某些极端情况下,每个项目都是完全独立的。在这一点上,无论一个或另一个失败,但通常情况并非如此。
一般来说,我希望批处理操作期间发生的任何错误都不是严重的。我的意思是系统应该能够忽略错误并继续运行,就好像导致错误的消息不存在一样。
如果处理这些消息真的很重要,那么我肯定会全力以赴。
【讨论】:
All or nothing的原则我应该返回第一个失败项的错误,对吧?