gst*_*low 3 java exception-handling spring-mvc custom-error-pages
我编写了以下控制器来处理我的代码中的所有异常:
@Controller
public class ErrorHandlerController {
@ExceptionHandler(value = Exception.class)
public String redirectToErrorPage(Model model){
model.addAttribute("message", "error on server");
return "errorPage";
}
}
Run Code Online (Sandbox Code Playgroud)
但看起来像下面的异常处理程序只有在异常抛出时才会起作用 ErrorHandlerController
我有很多控制器.请教我如何为所有控制器编写一个ExceptionHandler?
PS
我知道我可以使用继承但我不确定这是最好的决定.
更改将控制器从@Controller注释到@ControllerAdvice的方式,这将使其成为全局异常处理程序
文档说
默认行为(即,如果没有任何选择器使用),@ ControllerAdvice注释类将协助所有已知的控制器.
此外,您必须将您的方法更改为类似的方法
@ExceptionHandler(value = Exception.class)
public ModelAndView redirectToErrorPage(Exception e) {
ModelAndView mav = new ModelAndView("errorPage");
mav.getModelMap().addAttribute("message", "error on server");
return mav;
}
Run Code Online (Sandbox Code Playgroud)
要理解在使用@ExceptionHandler注释的方法中未解析模型参数的原因,请查看http://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc的深入部分.