我正在尝试创建一个控制器,它可以使用spring控制器建议注释来处理所有异常。
以下是我为此创建的课程。
@EnableWebMvc
@ControllerAdvice
public class GlobalDefaultExceptionHandler {
private static final Logger LOGGER = Logger.getLogger(GlobalDefaultExceptionHandler.class);
@ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
LOGGER.debug("Handling Exception!");
return new ModelAndView(new CustomError("<Error Message>"));
}
}
当抛出任何未处理的异常时,正在调用方法defaultErrorHandler,但它似乎向浏览器返回404错误,而不是返回视图CustomError。任何人都知道为什么会这样?
CustomError类位于
之下public class CustomError {
private String errorMessage;
public CustomError(String errorMessage) {
this.errorMessage = errorMessage;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
}
感谢。
答案 0 :(得分:1)
您似乎使用了错误的ModelAndView,您使用过的类似乎是org.springframework.web.portlet.ModelAndView
,它有constatoror ModelAndView(java.lang.Object)
您应该使用的类org.springframework.web.servlet.ModelAndView
没有接受Object的构造函数。
相应地更改导入和代码,你应该没问题
答案 1 :(得分:0)
我认为,有运行时异常,无法处理
@ExceptionHandler(value = Exception.class)
。
请发布您的控制器方法。