有没有一种方法可以使函数执行完后返回它所在的函数?

时间:2019-11-14 15:00:04

标签: c#

如果检查失败。我想执行一个函数,该函数将执行要执行的操作,然后将return;强制插入被调用的函数中。因此:

if (somethingImportant >= 0) {
    MyFunction(somethingImportant, __LINE__);
    return;
}

但是,如果可能的话,我很乐意将其换成单线。我希望它只执行一个函数,然后执行return;中的任何函数。这仅仅是因为它将使我的代码看起来更整洁,更具可读性,因为整个代码中的多次返回看起来很丑。

我尝试了throw new Exception(),它抛出了一个异常,有时却不值得抛出异常,而且,我也在Unity游戏引擎中工作,这意味着所有抛出的异常都将在控制台日志中列出。我很想避免。有多种资产开始表现,好像世界即将终结一样。同样,我还需要能够区分次要信息,不幸事故,警告和实际异常,这使得使用它们确实令人不快,因为它们看起来都一样。所有异常都记为错误,没有回旋余地。您可以执行自己的功能,但是无论您添加的功能是什么,它都带有异常。

解决方案可能类似于throw new Exception(),实际上并没有通知Unity异常(您可以使Exception静音并仅中断该函数吗?不抛出Exception?)。然后,我可以制作一个自定义的Exception,可以填充我的函数并提供解决方案。

我想要实现的完美演示是:

try
{
    if ("no" != "match") throw new Exception("OMAGAH!");
    Debug.Log("Because of what happened, I will NOT get executed");
}
catch (Exception e)
{
    Debug.Log("My message is safe here, I get to do whatever I do, no Exceptions truly thown, and the error was: " + e);
}

仅会导致以下结果:

My message is safe here, I get to do whatever I do, no Exceptions truly thown, and the error was: System.Exception: OMAGAH!
at TestEngine.Start () [0x00004] in

请注意其所有功能/结果:
1.您可以将其放在任何位置,任何块和范围内。
2.防止进一步执行其中的脚本。
3.禁止/阻止出现异常。
4.它使我能够执行所需的任何功能,并且永远不会提及异常。我可以制作Debug.LogWarn,Debug.Log,Debug.Error,我是Exception的主人。

一个问题,try-catch块比本文第一部分中的两个内衬大得多。它确实满足我的要求,但是太大了。

TLDR:是否可以使用单行代码来执行一个函数并使其执行其职责,并停止进一步执行代码(像Exception那样但实际上不抛出{ {1}})?

0 个答案:

没有答案