当我的调度程序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执行这种异常处理?
答案 0 :(得分:0)
是的,请将DispatcherServlet
与setThrowExceptionIfNoHandlerFound
配置
[...]当没有
NoHandlerFoundException
时是否抛出Handler
找到了这个请求。然后可以使用a捕获此异常HandlerExceptionResolver
或@ExceptionHandler
控制器方法。
并按照它说的做,即。为@ExceptionHandler
例外定义NoHandlerFoundException
。