在循环中中止嵌套函数

时间:2011-11-14 05:59:52

标签: c#

我对C#很新,只是“挖了”。我得到了第一个运行良好的简单实用程序应用程序,但是当它抛出错误时我遇到了问题。

现在我有两个函数,一个循环。

Main(){Foo(){loop{foo2()

foo2中的大多数东西都是foo2的本地东西,所以如果失败了,它只会返回并处理下一个项目,没什么大不了的。但是当有一个影响一切的错误时,我想基本上做两次返回或基本上抛出messagebox&停止运行当前foo2()并包含foo()。

我如何做到这一点,以便foo不会保持循环,从而在foo2()的所有剩余运行中抛出错误消息框

2 个答案:

答案 0 :(得分:2)

如果是“错误”,则可能抛出(并捕获)异常是一种选择,即

try {
   // lots
     // of 
        // loops
            throw new InvalidOperationException("oops");
} catch (Exception ex) {
    MessageBox.Show(ex.Message);
}

注意到您的UI代码(消息框)和实际代码实际上是分开的。

另一种选择是简单地使用returnreturn [some value]在您需要的地方退出子方法,即

string message = TryAndDoSomething();
if(!string.IsNullOrEmpty(message)) MessageBox.Show(message);
...
string TryAndDoSomething() {
   // lots
       // of
           // loops
                 return "oops";
    ...
   return null; // all ok
}

答案 1 :(得分:0)

我不确定我是否了解您的情况,所以请告诉我这是否能解决您的问题。原谅语法。

foo()
    {
      if(error-that-effects-everything)
        {
           return 0;
        }
      else if(error-that-doesn't)
        {
           return 1; 
        }
      else{}
    }

    bar()
    {
       retval = null;
       while(retval != 0)
       {
         retval = foo();
       }

    }

    Main()
    {
      bar();
    }