getMessage(), $e); } if ($e instanceof MethodNotAllowedHttpException) { abort(403, 'Method not allowed.'); } if ($e instanceof PrettyPageException) { return $e->showErrorPage(); } if ($e instanceof ValidationException) { // Quick fix for returning 422 // @see https://prinzeugen.net/custom-responses-of-laravel-validations/ return $e->getResponse()->setStatusCode(200); } foreach ($this->dontReport as $type) { if ($e instanceof $type) { return parent::render($request, $e); } else { // Hide exception details if we are not in debug mode if (config('app.debug') && !$request->ajax()) { return $this->renderExceptionWithWhoops($e); } else { return $this->renderExceptionInBrief($e); } } } } /** * Render an exception using Whoops. * * @param Exception $e * @param int $code * @param array $headers * @return Response */ protected function renderExceptionWithWhoops(Exception $e, $code = 200, $headers = []) { $whoops = new \Whoops\Run; $handler = (request()->isMethod('GET')) ? new \Whoops\Handler\PrettyPageHandler : new \Whoops\Handler\PlainTextHandler; $whoops->pushHandler($handler); return new Response( $whoops->handleException($e), $code, $headers ); } /** * Render an exception in a short word. * * @param Exception $e * @return Response */ protected function renderExceptionInBrief(Exception $e) { if (request()->isMethod('GET') && !request()->ajax()) { return response()->view('errors.exception', ['message' => $e->getMessage()]); } else { return $e->getMessage(); } } }