AppExceptionHandler.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package cn.minbb.iot.handler;
  2. import cn.minbb.iot.data.ResponseResult;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import org.springframework.web.bind.annotation.ExceptionHandler;
  6. import org.springframework.web.bind.annotation.RestControllerAdvice;
  7. import org.springframework.web.servlet.ModelAndView;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. @RestControllerAdvice
  11. public class AppExceptionHandler {
  12. private Logger logger = LoggerFactory.getLogger(AppExceptionHandler.class);
  13. @ExceptionHandler(value = Exception.class)
  14. public Object errorHandler(HttpServletRequest request, HttpServletResponse response, Exception e) throws Exception {
  15. e.printStackTrace();
  16. String error = "全局捕获异常\n" + e.getMessage();
  17. logger.error(error);
  18. if (isAjax(request)) {
  19. return ResponseResult.create().success(false).code(-1).message(e.getMessage());
  20. } else {
  21. ModelAndView modelAndView = new ModelAndView();
  22. modelAndView.addObject("TITLE", "IoT");
  23. modelAndView.addObject("exception", e);
  24. modelAndView.addObject("url", request.getRequestURL());
  25. modelAndView.setViewName("app-error");
  26. return modelAndView;
  27. }
  28. }
  29. /**
  30. * 判断请求是否为 Ajax 请求
  31. *
  32. * @param request HttpServletRequest
  33. * @return 是否为 Ajax 请求
  34. */
  35. private boolean isAjax(HttpServletRequest request) {
  36. return (null != request.getHeader("X-Requested-With") && "XMLHttpRequest".equals(request.getHeader("X-Requested-With")));
  37. }
  38. }