full()); Log::debug($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) { // 调试模式下直接返回错误信息 if (env('APP_DEBUG')) { return parent::render($request, $exception); } // 捕获访问异常 if ($exception instanceof NotFoundHttpException) { Log::info( "异常请求:" . $request->fullUrl() . ",IP:" . IP::getClientIp() ); if ($request->ajax()) { return Response::json( [ 'status' => 'fail', 'message' => trans('error.MissingPage'), ] ); } return Response::view( 'auth.error', ['message' => trans('error.MissingPage')], 404 ); } // 捕获身份校验异常 if ($exception instanceof AuthenticationException) { if ($request->ajax()) { return Response::json( [ 'status' => 'fail', 'message' => trans('error.Unauthorized'), ] ); } return Response::view( 'auth.error', ['message' => trans('error.Unauthorized')], 401 ); } // 捕获CSRF异常 if ($exception instanceof TokenMismatchException) { if ($request->ajax()) { return Response::json( [ 'status' => 'fail', 'message' => trans( 'error.RefreshPage' ) . '' . trans( 'error.Refresh' ) . '', ] ); } return Response::view( 'auth.error', [ 'message' => trans( 'error.RefreshPage' ) . '' . trans( 'error.Refresh' ) . '', ], 419 ); } // 捕获反射异常 if ($exception instanceof ReflectionException) { if ($request->ajax()) { return Response::json( [ 'status' => 'fail', 'message' => trans('error.SystemError'), ] ); } return Response::view( 'auth.error', ['message' => trans('error.SystemError')], 500 ); } // 捕获系统错误异常 if ($exception instanceof ErrorException) { if ($request->ajax()) { return Response::json( [ 'status' => 'fail', 'message' => trans('error.SystemError') . ', ' . trans( 'error.Visit' ) . '' . trans( 'error.log' ) . '', ] ); } return Response::view( 'auth.error', [ 'message' => trans('error.SystemError') . ', ' . trans( 'error.Visit' ) . '' . trans( 'error.log' ) . '', ], 500 ); } return parent::render($request, $exception); } }