package com.app.mvc.common; import com.app.mvc.beans.Result; import com.app.mvc.exception.NotFoundException; import lombok.extern.slf4j.Slf4j; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Slf4j public class SpringExceptionResolver implements HandlerExceptionResolver { private static final String JSON_URI = ".json"; @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { String url = request.getRequestURL().toString(); ModelAndView mv; String msg = "system error"; if (ex instanceof NotFoundException) { Result result = Result.fail(ex.getMessage()); mv = new ModelAndView("exception", result.toMap()); } else if (url.endsWith(JSON_URI)) { if (ex instanceof RuntimeException) { Result result = Result.fail(ex.getMessage()); mv = new ModelAndView("jsonView", result.toMap()); } else { Result result = Result.fail(msg); mv = new ModelAndView("jsonView", result.toMap()); } } else { log.error("系统错误", ex); Result result = Result.fail(msg); mv = new ModelAndView("exception", result.toMap()); } log.error("SpringMVCException, url=" + url + ", msg=" + ex.getMessage(), ex); return mv; } }