如果遇到错误,如何重新运行try块?

Kum*_*n T 4 c#

可能重复:
C#最简单的写入重试逻辑的方法?

我有一个功能包含服务器的Web服务调用,由于网络中的一些干扰,有时会失败(无法连接远程服务器错误).代码在try catch块中.我想在try块中重新运行Web服务调用,以便成功完成Web调用.

Alb*_*nbo 14

const int MaxRetries = 5;

for(int i = 0; i < MaxRetries; i++)
{
   try
   {
       // do stuff

       break; // jump out of for loop if everything succeeded
   }
   catch(Exception)
   {
       Thread.Sleep(100); // optional delay here
   }
}
Run Code Online (Sandbox Code Playgroud)

  • +1表示延迟建议,通常网络错误是暂时的 (2认同)

xan*_*ndy 12

bool success = false;
int retry = 0;

while (!success && retry<3)
{
    try{
        // web service calls
        success = true;
    } catch(Exception) {
        retry ++;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的解决方案,更好的是只捕获相关类型的例外. (2认同)
  • 小心,这可以默默地吞下任何异常.如果`retry> 3`,你至少可以考虑记录或重新投掷. (2认同)