springboot统一异常处理(JSON和ModelAndView)

       首先,我们需要使用注解@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页面中就可以了。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你认识小汐吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值