2017-02-20 71 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,也可以捕獲這種錯誤。

問題:如何從這些全局函數中捕獲這兩種函數都錯過的錯誤?

回答