@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);
}
}
求大神指点指点