getMessage(), $e); } if ($e instanceof MethodNotAllowedHttpException) { abort(403, trans('errors.http.method-not-allowed')); } if ($e instanceof TokenMismatchException) { if ($request->expectsJson()) { return json(trans('errors.http.csrf-token-mismatch'), 1); } abort(403, trans('errors.http.csrf-token-mismatch')); } 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/ if ($request->expectsJson()) { return response()->json([ 'errno' => 1, 'msg' => $e->validator->errors()->first() ]); } else { $request->session()->flash('errors', $e->validator->errors()); return redirect()->back(); } } 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 response($e->getMessage()); } } }