如果检查失败。我想执行一个函数,该函数将执行要执行的操作,然后将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}})?