3

这有点难以解释,但我会尽力而为。

这类似于我当前正在运行的代码。

function func1()
{

     func2()

}

function func2()
{

     exit();

}

我需要能够从 func2 中停止 func1 的执行,但我需要一个比 exit() 更好的方法。由于 func1 的调用者可能还有其他操作要做,我也不想停止它们,我只想停止 func1 的其余部分执行。

我知道我可以在 func1 中放置一个简单的 if 语句来检测 func2 的返回值,然后如果它是某个值则返回,但这也有点乱。

所以我的问题是,我怎样才能从一个函数中停止执行调用者函数的其余部分?

4

3 回答 3

4

返回一个值并检查它。

function func1()
{
    $result = func2();
    if ($result === 0) return;

    // Your func1 code here
}

function func2()
{
    if ( ... ) return 1;
    else return 0;
}
于 2013-10-14T20:46:57.220 回答
0

检查返回值并不麻烦。这是标准做法。你基本上有两个选择:

  • 检查返回值。
  • 在 func2 中抛出异常。如果它在 func1 中未被捕获,它将冒泡更高并停止在两个函数中执行。
于 2013-10-14T20:46:31.960 回答
0

这绝对不可能。

请记住:func2()可以从任何地方调用,而不仅仅是func1(). 你怎么知道你正在停止的是 func1 。

无论是什么让您认为中断调用函数可以解决问题 - 再想一想,并告诉我们更大的图景以获得适当的建议。

于 2013-10-14T20:47:35.530 回答