private function registerGlobalErrorHandler(Application $app) { $app->error(function (\Exception $e, $code) use($app) { /** @var Request $request */ $request = $app['request']; if (in_array('application/json', $request->getAcceptableContentTypes())) { $headers = []; if ($e instanceof HttpExceptionInterface) { $code = $e->getStatusCode(); $headers = $e->getHeaders(); } if ($e instanceof OAuthException) { $code = $e->httpStatusCode; $headers = $e->getHttpHeaders(); } return new JsonResponse(['error' => $e->getMessage()], $code, $headers); } /* @var Twig_Environment $twig */ $twig = $app['twig']; switch ($code) { case Response::HTTP_UNAUTHORIZED: $message = $twig->render('error/401.twig'); break; case Response::HTTP_FORBIDDEN: $message = $twig->render('error/403.twig'); break; case Response::HTTP_NOT_FOUND: $message = $twig->render('error/404.twig'); break; default: $message = $twig->render('error/500.twig'); } return new Response($message, $code); }); }