2017-02-20 68 views
0

下面是我用赶在全球范围内错过了异常和错误代码:set_exception_handler试图赶上错误

set_exception_handler(function(Exception $e) { 
    $exceptionCode = $e->getCode(); 

    switch ($exceptionCode) { 
     case '42000': # Database 
      FlashMessages::flashIt('message', 'There is a syntax error in the db query'); 
      include(Settings::ABSPATH . '/src/views/message.php'); 
      var_dump($e); 
      exit; 
      break; 
     default: 
      FlashMessages::flashIt('message', 'Something unpredicted happened.'); 
      include(Settings::ABSPATH . '/src/views/message.php'); 
      var_dump($e); 
      exit; 
      break; 
    } 
}); 

set_error_handler(function($errno, $errstr, $errfile, $errline) { 
    FlashMessages::flashIt('message', 'An error happened.'); 
    include(Settings::ABSPATH . '/src/views/message.php'); 
    var_dump($errstr); 
    exit; 
}); 

我期待什么: 所有异常,由set_exception_handler抓获。 set_error_handler捕获的所有错误。

我有什么:set_exception_handler试图找出错误并产生问题:致命错误:未捕获的类型错误:传递给参数1 {关闭}()必须是例外的一个实例,给

的set_error_han dler没有按”错误的实例即使我完全删除了set_exception_handler,也可以捕获这种错误。

问题:如何从这些全局函数中捕获这两种函数都错过的错误?

回答