假设我有这段代码,我试图确保以某种方式报告我的所有错误,但访问者不必看到一个漂亮的页面,为这种情况道歉。
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,在这种情况下,我会违背我最初的目的,即不显示错误,而是默默地报告它们。
因此,在这种情况下,我猜编译器不会像使用语法那样检查未定义的函数。在这种情况下会发生什么?它当然也不会继续。代码不应该循环吗?引擎盖下会发生什么?
我知道我有更好的选择来优雅地处理错误,例如定义调试模式(将显示错误),但我只想了解这种情况的复杂性