为什么set_error_handler不包括不在error_types中的错误?

时间:2014-03-20 22:51:49

标签: php error-handling

这是我的定义:

set_error_handler('errorHandler', E_ALL ^ E_NOTICE ^ E_STRICT ^ E_DEPRECATED);

基本上,我给set_error_handler一个22519的值,它排除了上面的错误类型。但是,我的errorHandler函数仍然收到严格的错误。我没有通过通知进行测试。我的功能非常基础:

function errorHandler($number, $string, $file, $line) {
    $message = "$number: $string in $file on line $line";
    throw new \Exception($message, $number);
}

我得到的结论是:

Exception 2048 2048: Declaration of X should be compatible with that of Y in XF on line 19 in ErrorHandler.php on line 70

正如您所知,我希望所有PHP错误都抛出异常以便于调试。

1 个答案:

答案 0 :(得分:0)

通过Google搜索E_ALLE_STRICT,我发现E_STRICT在PHP 5.4.0中成为了E_ALL的一部分,但我的服务器是PHP 5.3.0。这解释了这种差异。