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 \Throwable $exception * @return \Symfony\Component\HttpFoundation\Response * * @throws \Throwable */ public function render($request, Throwable $exception) { // return parent::render($request, $exception); if ($exception instanceof HttpException) { $code = $exception->getStatusCode(); $message = Response::$statusTexts[$code]; return $this->errorResponse($message, $code); } if ($exception instanceof ModelNotFoundException) { $model = strtolower(class_basename($exception->getModel())); return $this->errorResponse(trans('errors.model_not_found', ['model' => $model]), Response::HTTP_NOT_FOUND); } if ($exception instanceof AuthorizationException) { return $this->errorResponse($exception->getMessage(), Response::HTTP_UNAUTHORIZED); } if ($exception instanceof ValidationException) { $errors = $exception->validator->errors()->getMessages(); $message = ''; foreach ($errors as $val) { foreach ($val as $validation) { $message .= $validation . "\n"; } $message .= "\n"; } return $this->errorResponse($message, Response::HTTP_UNPROCESSABLE_ENTITY); } if ($exception instanceof AuthenticationException) { return $this->errorResponse($exception->getMessage(), Response::HTTP_UNAUTHORIZED); } if ($exception instanceof QueryException) { return $this->errorResponse($exception->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR); } if ($exception instanceof ServerException) { return $this->errorResponse($exception->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR); } if ($exception instanceof ErrorException) { return $this->errorResponse($exception->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR); } if ($exception instanceof ClientException) { $message = $exception->getResponse()->getBody()->getContents(); $error = json_decode($message); $code = $exception->getCode(); if ($error) { if (isset($error->message)) { $message = json_decode($error->message); if (isset($message->errorMessage)) return $this->errorResponse($message->errorMessage, $code); return $this->errorResponse($error->message, $code); } if (isset($error->error)) { try { $message = json_decode($error->error); if (isset($message->message)) return $this->errorResponse($message->message, $code); } catch (\Exception $e) { Log::error($e->getMessage()); } return $this->errorResponse(json_encode($error->error), $code); } } return $this->errorResponse($message, $code); } if ($exception instanceof AppException) { return $this->errorResponse($exception->getMessage(), $exception->getCode()); } if (env('APP_DEBUG', false)) { return parent::render($request, $exception); } return $this->errorResponse(trans('errors.unexpected_error'), Response::HTTP_INTERNAL_SERVER_ERROR); } }