首先,我们需要使用注解@ControllerAdvice,再结合@ExceptionHandler可以用于全局异常的处理。这里对这两个注解不做解释。
1、返回Json格式数据、
注:返回类ResponseJsonModel类是自定义类,其中包含属性如下:
public class ResponseJsonModel<T> {
//是否成功,true:成功;false:失败
private Boolean result;
private int code;
private String errorMessage;
//接口返回数据
private T data;
}
如果我们使用RestFul风格的API,返回都是JSON数据,在处理方法上添加@ResponseBody注解,如下代码
/**
* @Date: 2019/7/4 10:38
* @Author: do you know
* @Description:
*/
@ControllerAdvice
public class GlobalExceptionHandler {
/*
* 日志
*/
private final static Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
@ExceptionHandler(Exception.class)
@ResponseBody
public ResponseJsonModel jsonExceptionHandler(HttpServletRequest request, Exception e) {
ResponseJsonModel responseJsonModel = new ResponseJsonModel ();
//打印异常URL和异常内容
logger.error("Error_URL:" + request.getRequestURI(), e);
//设置请求结果为false
responseJsonModel.setResult(false);
//统一返回101码
responseJsonModel.setCode(101);
//设置返回的错误信息
responseJsonModel.setErrorMessage(e.getMessage());
return responseJsonModel;
}
}
2、返回ModelAndView,返回error页面
@ControllerAdvice
class GlobalExceptionHandler {
public static final String DEFAULT_ERROR_VIEW = "error";
@ExceptionHandler(Exception.class)
public ModelAndView viewException Handler(HttpServletRequest req, Exception e) {
ModelAndView modelAndView = new ModelAndView();
//将异常信息设置如modelAndView
modelAndView.addObject("exception", e);
modelAndView.addObject("url", req.getRequestURL());
modelAndView.setViewName(DEFAULT_ERROR_VIEW);
//返回ModelAndView
return modelAndView;
}
}
然后将ModelAndView 映射到我们自定义的exception页面中就可以了。

本文介绍如何在Spring框架中实现全局异常处理,通过@ControllerAdvice和@ExceptionHandler注解,返回JSON数据或ModelAndView,适用于RestFul API及错误页面展示。
&spm=1001.2101.3001.5002&articleId=94599427&d=1&t=3&u=338f7439777a42b887c86d6c70370400)
642

被折叠的 条评论
为什么被折叠?



