C#我应该循环直到没有例外吗?

Jad*_*e M 9 c# loops

我想通过一个循环,但只有抛出异常才会返回循环.我怎么用C#写这个?

谢谢

Nol*_*rin 22

这给我带来了糟糕的设计.一般的规律是:异常应该用于流量控制.有许多的原因; 也就是说,通常有更好/更可靠的方法可用于在抛出异常之前检查事物,并且还会降低效率.

尽管如此,仅仅为了争论,您可以执行以下操作:

while (true)
{
    try
    {
        // do stuff here
    }
    catch (MyException)
    {
        continue;
    }

    // all is good
    break;
}
Run Code Online (Sandbox Code Playgroud)

再次 - 这不是推荐的方式.如果您能提供更多上下文/示例/我会很乐意提出更好的建议

  • 我可以想到一些情况,这本身并不是糟糕的设计(例如,在超时异常时重试一个片状网络操作),但并不多. (3认同)

小智 6

您可以在以下位置设置重试次数:

            int tryCount = 0;

            while (tryCount < 3)
            {
                try
                {
                    someReturn = SomeFunction(someParams);
                }
                catch (Exception)
                {
                    tryCount++; 
                    continue;
                }
                break; 
            }
Run Code Online (Sandbox Code Playgroud)