PHP:set_exception_handler不适用于set_error_handler回调中抛出的错误

时间:2014-08-30 16:23:41

标签: php exception-handling

我有以下代码来设置我的错误/异常处理程序:

// Set the exception handler
set_exception_handler(function($e) {
    echo 'Exception';
});

// Set the error handler
set_error_handler(function($code, $message, $file, $line) {
    throw new ErrorException($message, 0, $code, $file, $line);
});

我已阅读过许多文章,这些文章曾说过在set_error_handler回调函数中抛出异常。这应该意味着我只需要处理异常。但是,从不调用set_exception_handler回调函数,而是收到警告:

  

警告:带有消息的未捕获异常'ErrorException'

请注意我使用的是PHP 5.4。

1 个答案:

答案 0 :(得分:2)

我尝试在下面运行PHP脚本,运行正常。

// set the exception handler
set_exception_handler(function($e) {
  echo ' Exception';
});

// set the error handler
set_error_handler(function($code, $message, $file, $line) {
  echo " Error [$message]";
  throw new ErrorException($message, 0, $code, $file, $line);
},-1);

// trigger error
trigger_error('My own error.',E_USER_ERROR);

它返回:

  

错误[我自己的错误。]异常

与你的完全一样。我找不到你提供的代码有什么问题,问题可能在它之外吗?