package com.imooc.exception;
import com.imooc.pojo.JSONResult;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
/**
* 捕获ajax的异常
*/
@RestControllerAdvice
public class AjaxExceptionHandler {
public static final String ERROR_VIEW="error";
/**
* 同时兼容web与ajax两种异常捕获
* @param request
* @param e
* @return
* @throws Exception
*/
@ExceptionHandler(value = Exception.class)
public Object defaultErrorHandler(HttpServletRequest request,Exception e) throws Exception{
e.printStackTrace();
if (isAjax(request)) {
return JSONResult.errorMsg(e.getMessage());
}else {
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("exception",e);
modelAndView.addObject("url",request.getRequestURI());
modelAndView.setViewName(ERROR_VIEW);
return modelAndView;
}
}
/**
* @Description:判断是否是ajax请求
* @param httpRequest
* @return
*/
public static boolean isAjax(HttpServletRequest httpRequest){
return (httpRequest.getHeader("X-Requested-With")!=null&&"XMLHttpRequest".equals(httpRequest.getHeader("X-Requested-With").toString()));
}
}
3 Spring Boot配置全局的异常捕获 - 同时兼容web与ajax
最新推荐文章于 2023-09-07 19:01:00 发布