0

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

ini_set('display_errors', 'off');

error_reporting(E_ALL);

set_exception_handler('exceptionHandler');

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

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

现在,如果我将其评论并仅留下undefinedFunction(),我将无法记录有关未定义函数的错误,我的代码也将进一步运行。我不知道会发生什么,所以我必须设置为display_errorsON,在这种情况下,我会违背我最初的目的,即不显示错误,而是默默地报告它们。

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

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

4

0 回答 0