处理 "No mapping found for HTTP request in DispatcherServlet" 情况
Handling "No mapping found for HTTP request in DispatcherServlet" situation
我一直在尝试全局处理我的调度程序 servlet 没有为请求的定义映射 url 但还没有找到解决方案的情况。
这是我的 class 处理全局异常的方法:
@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 中尝试了很多不同的classes,但对我来说没有任何效果。处理程序工作正常 - 当我从其中一个控制器抛出异常并且它没有在本地处理时,它直接进入这个全局处理程序。
有没有办法通过@ControllerAdvice 执行这种异常处理?
是的,用 setThrowExceptionIfNoHandlerFound
配置你的 DispatcherServlet
设置
[...] whether to throw a NoHandlerFoundException
when no Handler
was
found for this request. This exception can then be caught with a
HandlerExceptionResolver
or an @ExceptionHandler
controller method.
照它说的去做,即。为 NoHandlerFoundException
异常定义 @ExceptionHandler
。
我一直在尝试全局处理我的调度程序 servlet 没有为请求的定义映射 url 但还没有找到解决方案的情况。
这是我的 class 处理全局异常的方法:
@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 中尝试了很多不同的classes,但对我来说没有任何效果。处理程序工作正常 - 当我从其中一个控制器抛出异常并且它没有在本地处理时,它直接进入这个全局处理程序。
有没有办法通过@ControllerAdvice 执行这种异常处理?
是的,用 setThrowExceptionIfNoHandlerFound
配置你的 DispatcherServlet
设置
[...] whether to throw a
NoHandlerFoundException
when noHandler
was found for this request. This exception can then be caught with aHandlerExceptionResolver
or an@ExceptionHandler
controller method.
照它说的去做,即。为 NoHandlerFoundException
异常定义 @ExceptionHandler
。