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 算力,解读结果公开显示在下面。
还没有人解读过这个文件。