protected function returnFailure(Exception $exception) { $data = array(); $data['success'] = false; $data['errorCode'] = $exception->getCode(); $data['errorMsg'] = $exception instanceof common_exception_UserReadableException ? $exception->getUserMessage() : $exception->getMessage(); $data['version'] = TAO_VERSION; echo json_encode($data); exit(0); }
public function getBody() { $userMessage = ''; if ($this->exception instanceof HttpError) { $userMessage = $this->exception->getUserMessage(); } if ($this->request->getFormats()->contains('html')) { $model = array('status' => $this->getStatus(), 'rootUrl' => $this->request->getContext()->toString(), 'userMessage' => $userMessage); $details = date('Y-m-d H:i:s'); $exception = $this->exception; while ($exception) { $details .= "\n" . get_class($exception) . ": " . $exception->getMessage() . "\n" . $exception->getTraceAsString() . "\n"; $exception = $exception->getPrevious(); } $model['details'] = htmlentities($details); return $this->renderTemplate($model); } else { return $userMessage ?: get_class($this->exception) . ': ' . $this->exception->getMessage(); } }
/** * Generate safe message preventing exposing sensitive date in non develop mode * @param Exception $exception * @return string */ private function getErrorMessage(Exception $exception) { $defaultMessage = __('Unexpected error. Please contact administrator'); if (DEBUG_MODE) { $defaultMessage = $exception->getMessage(); } return $exception instanceof common_exception_UserReadableException ? $exception->getUserMessage() : $defaultMessage; }
/** * 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); }