Example #1
0
 public function reportExceptionHttp(\Exception $exception)
 {
     if ($exception instanceof RailsException) {
         $status = $exception->status();
     } else {
         $status = 500;
     }
     $this->application->response()->setStatus($status);
     if ($this->application->config()['environment'] != 'production') {
         $contents = $this->createHtmlReport($exception);
     } else {
         $contents = $this->errorNotice($exception, $status);
     }
     $this->application->response()->setBody($contents);
 }
 public function dispatch(\Exception $e, $currentController, $application)
 {
     if ($e instanceof \Rails\Exception\Exception) {
         $status = $e->status();
     } else {
         $status = 500;
     }
     $application->response()->setStatus($status);
     $handlerClass = $application->config()['action_controller']['error_handler'];
     $handler = new $handlerClass($application);
     $paths = $currentController->actionView()->lookupContext()->paths;
     if (!$paths) {
         $paths = $application->config()['paths']['app']->expand('views');
     }
     $handler->actionView()->lookupContext()->addPaths($paths);
     $handler->handleException($e);
 }
Example #3
0
 /**
  * @param Exception|Throwable $e
  * @return void
  */
 private static function reportException($e)
 {
     Rails\ActionView\ActionView::clean_buffers();
     $parmas = [];
     $params['status'] = $e instanceof Rails\Exception\ExceptionInterface ? $e->status() : 500;
     $params['report'] = Rails\Exception\Reporting\Reporter::create_report($e, $params);
     self::log()->message(Rails\Exception\Reporting\Reporter::cleanup_report($params['report']));
     if (!self::application() || !self::application()->dispatcher()) {
         try {
             if (!self::application()) {
                 self::_early_exception($e, $params['report']);
             }
             self::application()->setDispatcher();
         } catch (Throwable $e) {
             self::_early_exception($e, $params['report']);
         } catch (Exception $e) {
             self::_early_exception($e, $params['report']);
         }
     }
     self::application()->dispatcher()->response()->headers()->status($params['status']);
     if (self::config()->action_controller->exception_handler && !self::config()->consider_all_requests_local) {
         try {
             self::$customExceptionHandlerRan = true;
             $handler = Rails\ActionController\ActionController::load_exception_handler(self::$config->action_controller->exception_handler, $params['status']);
             Rails::application()->set_controller($handler);
             $handler->handleException($e);
         } catch (Throwable $e) {
             self::_early_exception($e, $params['report']);
         } catch (Exception $e) {
             self::_early_exception($e, $params['report']);
         }
     } else {
         $renderer = new Rails\ActionController\Response\Error($e, $params);
         self::application()->dispatcher()->response()->headers()->contentType('html');
         self::application()->dispatcher()->response()->body($renderer->render_view()->get_contents());
     }
     self::application()->dispatcher()->respond();
     exit;
 }