/** * @param \Throwable $exception * * @return bool */ public function exceptionHandler(\Throwable $exception) { if ($exception instanceof ResponseCode) { try { $out = $this->render($exception->getCode(), [], $exception->display()); } catch (\Throwable $exception) { return $this->exceptionHandler($exception); } // debug on dev / display trace if (!(AbstractApp::env() != AbstractApp::PRODUCTION && ob_get_length() > 0)) { self::response()->addHeader('Content-Type', $this->getErrorContentType()); } self::response()->setStatus($exception->getCode()); self::response()->setBody($out); HttpApp::instance()->end(); } else { Handler::log($exception); if (AbstractApp::env() != AbstractApp::PRODUCTION) { Handler::exceptionHandler($exception); } else { $throw = new ResponseCode($exception->getMessage(), 500, $exception); $this->exceptionHandler($throw); } } return true; }
/** * HttpApp constructor. * * @param string $appRoot */ protected function __construct(string $appRoot) { parent::__construct($appRoot); ErrorHandler::register(); ob_start(); }