我正在从 w3school的PHP教程中学习PHP。
在“PHP错误处理”一章中,我正在研究创建自定义错误处理程序。
我遇到了以下程序,其中定义了自定义错误处理函数。请参见下面的代码。
<?php
//error handler function
function customError($errno, $errstr) {
echo "<b>Error:</b> [$errno] $errstr";
}
//set error handler
set_error_handler("customError");
//trigger error
echo($test);
?>
上面的代码输出如下:
错误: [8] undefined variable :测试
我的疑问是,因为我没有在程序中的任何位置指定错误级别和错误消息,然后自定义错误函数从何处以及如何获取错误级别和错误消息?
整个自定义错误处理机制如何在PHP中起作用?
请用简单明了的语言向我解释。您也可以借助其他示例进行解释。实际上,对我来说也更好。
最佳答案
您的自定义处理程序收到的错误级别是PHP的E_ *常量之一。您会找到可能的常量及其值列表here。
在您的示例中,使用 undefined variable $test
通常会引起PHP通知。因此,您将在自定义处理程序中将值8(即E_NOTICE
)作为$errno
获得。您无法更改错误消息,因为此错误是由PHP内部生成的。
尝试一下:删除自定义错误处理程序,并查看PHP为您提供的使用 undefined variable 的错误。这正是调用自定义处理程序的级别和消息。
我建议您使用trigger_error()
函数(see here)尝试处理程序。这是设置错误级别并自行发送消息的唯一方法。
另请注意,在error_reporting ini设置中设置的内容无关紧要!您的自定义处理程序始终接收所有错误消息,无论级别如何。
请通读上面链接的手册页。
关于php - 自定义错误处理程序函数中的error_level和error_message来自何处以及如何出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41375648/