关于c#return也返回调用函数:c#return也返回调用函数 – 类似于PHP的die()早期出来

c# return that also returns the calling function - similar to PHP's die() early out

本问题已经有最佳答案,请猛点这里访问。

注意:这是一个从PHP角度来看的问题。也许这不是正确的方法,但我正努力做到这一点。

假设您定义了:

1
2
3
4
void Die(string error){
 print(error);
 return;
}

从另一个方法调用它:

1
2
3
4
5
6
void CallingFunction(){
  if(SomethingDoesNotCheckOut())
   Die("bla");

  // do stuff
}

是否可以让die()在调用它的"parent"方法中提前触发?

一个例子:

1
2
3
4
5
6
void CallingFunction(){
  if(index>arrayLength)
   Die("that's too big!");

  // do stuff
}

似乎Try-Catch对于这个来说是多余的,但是我更希望能够调用一个函数来停止当前的"parent"函数。也许我想得太像php的死神了


通常为此目的使用异常。只需抛出一个Exception

1
2
3
4
void Die(string error){
 print(error);
 throw new Exception(error);
}

您可以通过在更高级别上实现一个try ... catch来随时处理它。

1
2
3
4
5
6
7
8
try
{
    // Something that can call Die.
}
catch (Exception ex)
{
    // Something threw an exception. Now handle it.
}

不,不要不抛出异常。记住,在许多情况下,调用方法将是非空的——在这种情况下,您希望它返回什么值?

老实说,您所描述的用例听起来确实更适合处理异常情况。这就是C惯用的错误处理机制。

如果要收集错误而不使用异常,则必须显式返回。