1
21
你可以在一个循环中完成。
|
2
12
您可以尝试另一种方法:
我认为它更好地记录了意图。它的代码也更少,更容易维护。 |
3
11
到目前为止,所有的答案都假定对任何异常的反应都应该是重试该操作。这是一个很好的假设,直到它是一个错误的假设。您可以很容易地重试正在损坏系统的操作,所有这些都是因为您没有检查异常类型。
你应该差不多
从未
“光秃秃的”
|
4
2
尝试一个具有某种限制的循环:
|
5
1
您应该使用递归(或循环),并且只有在得到预期的错误时才应该重试。 例如:
编辑 有一个循环:
您可以尝试在
如果最后一次重试失败,这将引发最后一个异常。 |
6
1
这里有一些我们正在使用的重试逻辑。我们做的不多,我将把它拉出并记录为我们的重试模式/标准。当我第一次写它的时候,我必须把它放在机翼上,所以我来这里是想看看我写的是否正确。看起来我是。下面的版本是完全注释的。有关未注释的版本,请参见下面的内容。
我喜欢SamuelNeff使用异常变量来查看它是否完全失败的例子。这会使我逻辑中的一些评估变得简单一些。我可以走任何一条路。不确定这两种方法都有明显的优势。不过,在这个时候,我不会改变我们的做法。重要的是要记录下你在做什么,为什么这样一些白痴就不会从你身后走过,把所有的事情都弄糟。 不过,为了更好地了解代码是否在某种程度上更短或更干净,我把所有的注释都删掉了。他们排出来的行数完全一样。我继续编译了这两个版本,并通过Reflector代码度量来运行它们,得到了以下结果:
catch内的最终异常逻辑(22行):
for循环之后的最终异常逻辑(22行):
|
7
1
我正在为重试方案使用以下通用方法。我特别想引起大家的注意
|
8
0
正如其他人所指出的,正确的方法是用某种类型的max_重试将您的try/catch包装在某个循环中。 您还可以考虑在每个循环迭代之间添加超时。否则,在暂时性问题有机会自行解决之前,您可能会烧毁重试计数器。 |
9
0
似乎你有你需要的答案,但我想我会发布这个链接, What is an Action Policy? 我发现这提供了一个更优雅的解决方案。Lokad有一些相当复杂的实现,但是这个家伙的逻辑是非常可靠的,并且您最终编写的最终代码是非常简单的。 |
10
0
更新:基于注释的固定代码。 |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
Dansih · .Net核心自定义身份验证方案 2 年前 |
lolorekkk · 面板插入。NET WinForm 2 年前 |