那么异常处理程序回调中的未定义函数呢?

时间:2016-11-27 22:00:51

标签: php error-handling undefined-function

假设我有这段代码,我试图确保以某种方式报告我的所有错误,但访问者不必看到一个很好的页面为这种情况道歉。

ini_set('display_errors', 'off');

error_reporting(E_ALL);

set_exception_handler('exceptionHandler');

function exceptionHandler($error)
{
    // functionWithSyntaxError()
    undefinedFunction();
    echo $error->getMessage();
}

如果我将functionWithSyntaxError()取消注释,我会看到有关语法的错误。我想这是因为代码甚至没有运行,编译器也不关心我的异常处理程序或其他指令。

现在,如果我回复它并仅留下undefinedFunction(),我将无法记录有关未定义函数的错误,或者我的代码会进一步运行。我不知道会发生什么,所以我必须设置display_errors ON,在这种情况下,我会违背我不显示错误的原始目的,而是默默地报告它们。

因此,在这种情况下,我猜编译器不检查未定义的函数,因为它与语法一样。在这种情况下会发生什么?它当然也不会继续。代码不应该循环吗?引擎盖下会发生什么?

我知道我有更好的选择来优雅地处理错误,定义一个调试模式(会显示错误),但我只是想了解这种情况的复杂性

0 个答案:

没有答案
相关问题