src/main/java/com/nathan/crm/GlobalExceptionResolver.java

(开头部分) 4KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

package com.nathan.crm;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.nathan.base.ResultInfo;
import com.nathan.crm.exceptions.NoLoginException;
import com.nathan.crm.exceptions.ParamsException;
import com.nathan.crm.interceptor.NoLoginInterceptor;
import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
    全局异常统一处理

    方法返回值:
        1、返回视图
        2、返回JSON数据
    如何判断方法的返回值:
        通过方法上是否声明ResponseBody注解
            如果声明了,则表示返回数据
            如果没声明,则表示返回视图
 */
@Component
public class GlobalExceptionResolver implements HandlerExceptionResolver {

    /**
        异常处理方法
     */
    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {

       //判断异常是否为未登录异常
        if (ex instanceof NoLoginException){
            //跳转到登录页面
            return new ModelAndView("redirect:/index");
        }

        //默认异常处理(返回视图)
        ModelAndView modelAndView = new ModelAndView("error");
        //设置异常信息
        modelAndView.addObject("code",500);
        modelAndView.addObject("msg","系统异常,请重试");

        //判断HandlerMethod
        if (handler instanceof HandlerMethod){
            //类型转换
            HandlerMethod handlerMethod = (HandlerMethod) handler;
            //获取方法声明上的@ReponseBody对象
            ResponseBody responseBody = handlerMethod.getMethod().getDeclaredAnnotation(ResponseBody.class);

后面还有 56 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。