SpringMVC用ControllerAdvice如何拦截404错误

@ControllerAdvice(annotations = {RestController.class, Controller.class})
public class RestExceptionHandler {
    private static final Logger LOGGER = LogManager.getLogger(RestExceptionHandler.class);

    @ExceptionHandler(value = {IOException.class, RuntimeException.class})
    @ResponseBody
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    private MyInfo illegalParamsExceptionHandler(Exception ex) {
       。。。
    }

    @ExceptionHandler(value = {NoHandlerFoundException.class})
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public ModelAndView noMapping(Exception ex) {
        HttpServletRequest request= MyClass.getRequest();
        LOGGER.error("error-----404---->" + request.getContextPath(), ex);
        return new ModelAndView("errorpage/error");
    }
}

第一个异常拦截可以,但是第二个404拦截就无效,断点也不进入。
搜索一下,有人说还要去某个地方注明一下抛出404异常,但是也无效

@Order(1)
public class WebInit implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext container) throws ServletException {
        AnnotationConfigWebApplicationContext dispatcherContext = new AnnotationConfigWebApplicationContext();
        DispatcherServlet dispatcherServlet = new DispatcherServlet(dispatcherContext);
        dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);

    }

}

求大神指点指点

结合大神的答案,补充一个网站找到的文章
http://blog.csdn.net/FansUnio...

阅读 12k
1 个回答

404被tomcat容器拦截了
到不了controller
也就到不了@ControllerAdvice

自定义404的处理方法可以参考以下几种方法:
http://www.cnblogs.com/handso...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题