在循环中中止嵌套函数

本文关键字:函数 嵌套 循环 | 更新日期: 2023-09-27 18:14:20

我是c#的新手,刚刚开始学习。我得到了我的第一个简单的实用程序,运行良好,但我有一个问题,当它抛出一个错误。

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

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

foo2中的大多数内容都是本地的foo2,所以如果出现故障,它只是返回并处理下一个项目,没什么大不了的。但是当错误影响到一切时,我想做两次返回或者抛出messagebox &停止运行当前的foo()和封闭的foo()。

我如何做到这一点,使foo不会继续循环,从而抛出一个消息框的错误在所有剩余的运行foo2()

在循环中中止嵌套函数

如果是"一个错误",那么抛出(和捕获)一个异常可能是一个选项,即

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
}

我不确定我是否理解你的场景,所以让我知道这是否解决了你的问题。请原谅我的语法。

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();
    }