只需在收到通知/警告时停止脚本执行


Simply stop script execution upon notice/warning

如何安排脚本执行在通知/警告时停止,而不改变其他行为,包括通知/警告消息,例如,不抛出异常。

根据通知/警告停止脚本执行是另一个问题。

您可以创建一个自定义错误处理函数,如下所示:

<?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_NOTICEE_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你不能。
您必须创建一个自定义错误处理程序来停止执行。