Back to JsonapiRenderer class

Method render

public string
render
(\Throwable $error)
Render the error page for the given object
Parameters
  • \Throwable $error The error object to be rendered
Returns
  • string
Since
  • 4.0.0

Method render - Source code

/**
 * Render the error page for the given object
 *
 * @param   \Throwable  $error  The error object to be rendered
 *
 * @return  string
 *
 * @since   4.0.0
 */
public function render(\Throwable $error) : string
{
    if ($error instanceof \Exception) {
        $errors = new ErrorHandler();
        $errors->registerHandler(new InvalidRouteExceptionHandler());
        $errors->registerHandler(new AuthenticationFailedExceptionHandler());
        $errors->registerHandler(new NotAcceptableExceptionHandler());
        $errors->registerHandler(new NotAllowedExceptionHandler());
        $errors->registerHandler(new InvalidParameterExceptionHandler());
        $errors->registerHandler(new ResourceNotFoundExceptionHandler());
        $errors->registerHandler(new SaveExceptionHandler());
        $errors->registerHandler(new CheckinCheckoutExceptionHandler());
        $errors->registerHandler(new SendEmailExceptionHandler());
        $errors->registerHandler(new FallbackExceptionHandler(JDEBUG));
        $response = $errors->handle($error);
    } else {
        $code = 500;
        $errorInfo = ['code' => $code, 'title' => 'Internal server error'];
        if (JDEBUG) {
            $errorInfo['detail'] = (string) $error;
        }
        $response = new ResponseBag($code, $errorInfo);
    }
    $this->getDocument()->setErrors($response->getErrors());
    $app = Factory::getApplication();
    if ($app instanceof WebApplicationInterface) {
        $app->setHeader('status', $response->getStatus());
    }
    if (ob_get_contents()) {
        ob_end_clean();
    }
    return $this->getDocument()->render();
}