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