bound('sentry') && $this->shouldReport($exception)) { app('sentry')->captureException($exception); } parent::report($exception); } /** * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request * @param \Exception $exception * @return \Symfony\Component\HttpFoundation\Response * * @throws \Exception */ public function render($request, Exception $exception) { return parent::render($request, $exception); } /** * Convert an authentication exception into an unauthenticated response. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Auth\AuthenticationException $exception * @return \Illuminate\Http\Response */ protected function unauthenticated($request, AuthenticationException $exception) { if ($request->expectsJson()) { return response()->json(['error' => 'Unauthenticated.'], 401); } return redirect()->guest(route('login')); } protected function prepareException(Exception $e) { if (!config('app.debug') && $e instanceof ModelNotFoundException) { return new NotFoundHttpException('Resource not found.', $e); } return parent::prepareException($e); } protected function prepareJsonResponse($request, Exception $e) { $status = $this->isHttpException($e) ? $e->getStatusCode() : 500; return new JsonResponse( [ 'status' => $status, 'error' => $this->convertExceptionToArray($e), ], $status, $this->isHttpException($e) ? $e->getHeaders() : [], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES ); } }