C# 若for循环失败,计数器是否仍然上升?

C# 若for循环失败,计数器是否仍然上升?,c#,for-loop,C#,For Loop,如果doStuff()抛出异常,我是否需要I--是否重试 for(int i=0; i<5; i++) { doStuff(); } for(int i=0;i在您发布的代码中,如果抛出异常,它将退出您的for循环,并从最高级别的catch块所在的位置继续 for(int i=0; i<5; i++) { doStuff()

如果
doStuff()
抛出异常,我是否需要
I--是否重试

          for(int i=0; i<5; i++)
          {
               doStuff();
          }

for(int i=0;i在您发布的代码中,如果抛出异常,它将退出您的
for
循环,并从最高级别的
catch
块所在的位置继续

          for(int i=0; i<5; i++)
          {
               doStuff();
          }
如果你用try/catch来包装它,
i
仍然会增加1

          for(int i=0; i<5; i++)
          {
               doStuff();
          }
for(int i=0; i<5; i++)
{
    try
    {
        doStuff();
    }
    catch(Exception ex)
    {
        //handle the exception.
        //i-- does not count as handling the exception.
    }
}
for(inti=0;i简而言之:

          for(int i=0; i<5; i++)
          {
               doStuff();
          }
for(int i=0; i<5; i++)
{
    try 
    {
        doStuff();
    }
    catch (Exception x)
    {
        i--;
    }
}

for(int i=0;i如果DoStuff不在try-catch块中,则i不会上升,但您将退出范围,因为i将被垃圾收集,并且您的应用程序将因未处理的异常而崩溃。

如果您在一个try块中,for循环不关心异常,因为它是一些代码功能,我将启动。

我不会像这样无限期地循环,相反,如果
doStuff()
不断失败,我至少会包含某种out。可能类似这样的情况:

          for(int i=0; i<5; i++)
          {
               doStuff();
          }
int maxRetries = 10;
for(int i=0; i<5; i++)
{
    try 
    {
        doStuff(); 
    }
    catch (Exception)    // Note: you really should catch the most specific exception you expect doStuff to throw
    {
        if (maxRetries > 0) 
        {
            // Do anything you need to do to make the call more likely to work next time
            maxRetries--;
            i--;
        }
        else
        {
            // give up - return a message to the user that something is wrong
        }
    }
}
int-maxRetries=10;
对于(int i=0;i 0)
{
//做任何你需要做的事情,使电话下次更有可能工作
最大重试次数--;
我--;
}
其他的
{
//放弃-向用户返回某个错误消息
}
}
}

所说的失败,是指它抛出异常吗?因此,将它包装在try/catch块中,然后在catch块中执行
i--
,注意如果它继续失败,循环将永远不会结束。如果它在任何点失败,您调用
doStuff()
再说一次,它会失败吗again@user2525463:你的问题到底是什么?那没有意义。如果
doStuff()
抛出异常,可能需要您更改某些内容,使其不再抛出。但在不知道
doStuff
是什么的情况下,有人应该如何告诉您?我必须同意@MattBurland的说法,您显然在
doStuff()方面遇到了麻烦
但是您提出的运行函数直到其工作为止的解决方案,以及您向我们寻求帮助的解决方案,不是一个好的解决方案。您应该尝试修复/询问实际问题。如果方法不断失败,索引不断递减,这会不会导致潜在的
StackOverflowException
进行ested方法调用,这是唯一可能发生的方法。@Ric只有在
doStuff
是递归的情况下才会发生,但在这种情况下,它无论如何都会抛出这样的异常,这是公平的,我想我会问一些新问题并学到一些新东西!伙计们,干杯。@Ric它会(可能)永远运行,这在某些上下文中实际上更糟。