在循环中中止嵌套函数
本文关键字:函数 嵌套 循环 | 更新日期: 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代码(消息框)和实际的代码最好分开。
另一种选择是简单地使用return
或return [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();
}