【发布时间】:2018-06-12 22:42:28
【问题描述】:
注意:这是一个从 PHP 角度来看 C# 的问题。也许这不是正确的方法,但这是我正在尝试做的。
假设你已经定义了:
void Die(string error){
print(error);
return;
}
你从另一个方法调用它:
void CallingFunction(){
if(SomethingDoesNotCheckOut())
Die("bla");
// do stuff
}
是否有可能让 Die() 也触发调用它的“父”方法中的早期输出?
一个例子:
void CallingFunction(){
if(index>arrayLength)
Die("that's too big!");
// do stuff
}
似乎 try-catch 对此有点过头了,但我宁愿只调用一个函数来停止当前的“父”函数。可能是我想太多像PHP's die()
【问题讨论】:
-
你说的early out是什么意思?
-
异常,
try和catch是处理 C# 错误的最佳方法。返回值更多的是 C 风格。 -
看你的标题和代码我认为当一切正常时你只需要一个 else 块
-
if(somethingbad) { Die("reason"); return;} else { 做事 }
-
如果“未知用户”编写错误代码是因为他们不了解控制流,那么这就是他们的问题。除了异常之外,C# 中没有与“死”等价的东西。但是,对于正常的控制流,您应该使用
return。您的示例是一个方法的简单保护子句,如果它足够严重,它要么是一个异常,要么是一个简单的返回(如果不是)。简单地说,不要创建“死”方法,你应该没问题。如果您需要记录故障,则将该方法改为记录方法,并且没有人会认为它会在此过程中“强制提前返回”。