Example #1
0
 /**
  * Handle PHP Exception
  * @SuppressWarnings(PHPMD.ExitExpression)
  * @param Exception $exception
  */
 public function handleException(\Exception $exception)
 {
     $message = $exception->getMessage();
     $userMessage = 'Unspecified Technical Difficulties';
     $code = 500;
     $log = $this->_log;
     if ($exception instanceof \Lvc_Exception) {
         $code = 404;
         $log = $this->_404Log;
         $userMessage = 'Sorry the page you are looking for could not be found.';
     }
     if ($exception instanceof \PDOException) {
         $message = 'Problem with database connection. PDO says: ' . $message;
         $userMessage = 'We are experiencing a problem connecting to our database.  Please try your request again.';
     }
     if ($exception instanceof \Foundation\Exception) {
         $userMessage = $exception->getUserMessage();
     }
     if ($exception instanceof \Foundation\Virtual\Exception) {
         $userMessage = $exception->getUserMessage();
         $code = $exception->getHttpErrorCode();
         $log = $this->_404Log;
     }
     /* Map the PHP error to a Log priority. */
     switch ($exception->getCode()) {
         case E_WARNING:
         case E_USER_WARNING:
             $priority = \Monolog\Logger::WARNING;
             break;
         case E_NOTICE:
         case E_USER_NOTICE:
             $priority = \Monolog\Logger::INFO;
             break;
         case E_ERROR:
         case E_USER_ERROR:
             $priority = \Monolog\Logger::CRITICAL;
             break;
         default:
             $priority = \Monolog\Logger::INFO;
     }
     $log->addRecord($priority, $message);
     //send the error to PHP as well
     error_log($message);
     // Get a request for the error page
     $request = new \Lvc_Request();
     $request->setControllerName('error');
     $request->setActionName('index');
     $request->setActionParams(array('error' => $code, 'message' => $userMessage));
     // Get a new front controller without any routers, and have it process our handmade request.
     $frontController = new \Lvc_FrontController();
     $frontController->processRequest($request);
     exit(1);
 }