如何安排脚本执行在通知/警告时停止,而不改变其他行为,包括通知/警告消息,例如,不抛出异常。
根据通知/警告停止脚本执行是另一个问题。
您可以创建一个自定义错误处理函数,如下所示:
<?php
// error handler function
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
if (!(error_reporting() & $errno)) {
// This error code is not included in error_reporting
return;
}
switch ($errno) {
case E_USER_ERROR: exit('Im a user error.');
case E_USER_WARNING: exit('Im a user warning');
case E_USER_NOTICE:
printNotice($errno, $errstr, $errfile, $errline);
break;
default: exit('Unknown Error');
}
// don't execute PHP internal error handler
return true;
}
function printNotice($errno, $errstr, $errfile, $errline)
{
// use the following vars to output the original error
var_dump($errno, $errstr, $errfile, $errline);
exit;
}
重要的是常数:E_USER_NOTICE
和E_USER_WARNING
。
function printNotice()
显示如何打印原始错误,使其看起来未被修改,然后以exit停止脚本执行。所有原始错误数据(消息、行号等)都在变量中$errno, $errstr, $errfile, $errline。PHP在注册的errorhandler(这里是myErrorHandler)中自动提供错误数据。在这个例子中,我将所有的参数第二次转发给printNotice()函数,该函数可以以不同的方式格式化错误或对其进行您喜欢的操作。
然后用set_error_handler()注册它,如下所示:
<?php
// register your error handler
set_error_handler('myErrorHandler');
为了测试错误处理,可以使用trigger_error()函数:
trigger_error("This is a User Error", E_USER_ERROR);
trigger_error("This is a User Warning", E_USER_WARNING);
trigger_error("This is a User Warning", E_USER_NOTICE);
直接回答你的问题是NO
你不能。
您必须创建一个自定义错误处理程序来停止执行。