处理"在DispatcherServlet中找不到HTTP请求的映射"情况

时间:2015-10-09 15:05:24

标签: java spring model-view-controller exception-handling dispatcher

当我的调度程序servlet没有为请求的网址定义映射但尚未找到解决方案时,我一直试图处理全局情况。

这是我处理全球例外的课程:

@ControllerAdvice
public class GlobalExceptionHandlerController {

@Value("${exception.view.default}")
private String defaultExceptionView;

private static final Logger LOGGER = Logger.getLogger(GlobalExceptionHandlerController.class);

@ExceptionHandler(Exception.class)
public ModelAndView notFoundException(Exception e) {
    LOGGER.error("Error ocurred: " + e.getMessage());
    return new ModelAndView(defaultExceptionView)
            .addObject("code", "404")
            .addObject("name", "Page Not Found")
            .addObject("message", "We couldn't find requested resource");
    }
}

我在@ExceptionHandler中尝试了很多不同的类,但没有对我有用。处理程序工作正常 - 当我从其中一个控制器抛出异常并且它没有在本地处理时,它直接进入这个全局处理程序。

有没有办法通过@ControllerAdvice执行这种异常处理?

1 个答案:

答案 0 :(得分:0)

是的,请将DispatcherServletsetThrowExceptionIfNoHandlerFound配置

  

[...]当没有NoHandlerFoundException时是否抛出Handler   找到了这个请求。然后可以使用a捕获此异常   HandlerExceptionResolver@ExceptionHandler控制器方法。

并按照它说的做,即。为@ExceptionHandler例外定义NoHandlerFoundException