gpt4 book ai didi

java - spring-mvc 中所有 Controller 的@ExceptionHandler

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:44:58 24 4
gpt4 key购买 nike

我已经编写了以下 Controller 来处理我代码中的所有异常:

@Controller
public class ErrorHandlerController {

@ExceptionHandler(value = Exception.class)
public String redirectToErrorPage(Model model){
model.addAttribute("message", "error on server");
return "errorPage";
}
}

但看起来只有在 ErrorHandlerController 内部抛出异常时,下面的异常处理程序才会工作

我有大量的 Controller 。请告诉我如何为所有 Controller 编写一个 ExceptionHandler?

附言

我知道我可以使用继承,但我不确定这是最好的决定。

最佳答案

将注释 Controller 的方式从 @Controller 更改为 @ControllerAdvice,这将使它成为全局异常处理程序

文档说

The default behavior (i.e. if used without any selector), the @ControllerAdvice annotated class will assist all known Controllers.

此外,您必须将方法更改为类似

@ExceptionHandler(value = Exception.class)
public ModelAndView redirectToErrorPage(Exception e) {
ModelAndView mav = new ModelAndView("errorPage");
mav.getModelMap().addAttribute("message", "error on server");
return mav;
}

要理解为什么 model 参数在使用 @ExceptionHandler 注释的方法中未解析,请查看 http://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc深入部分

关于java - spring-mvc 中所有 Controller 的@ExceptionHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28677971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com