我对C#很新,只是“挖了”。我得到了第一个运行良好的简单实用程序应用程序,但是当它抛出错误时我遇到了问题。
现在我有两个函数,一个循环。
Main(){Foo(){loop{foo2()
foo2中的大多数东西都是foo2的本地东西,所以如果失败了,它只会返回并处理下一个项目,没什么大不了的。但是当有一个影响一切的错误时,我想基本上做两次返回或基本上抛出messagebox&停止运行当前foo2()并包含foo()。
我如何做到这一点,以便foo不会保持循环,从而在foo2()的所有剩余运行中抛出错误消息框
答案 0 :(得分:2)
如果是“错误”,则可能抛出(并捕获)异常是一种选择,即
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
}
答案 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();
}