Example #1
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;
 }