我希望实现一个“ExceptionController”来处理在执行其他 Controller 方法时抛出的异常。根据 API documentation,我没有在我的应用程序上下文中指定任何 HandlerExceptionResolver应该启动 AnnotationMethodHandlerExceptionResolver。我在源代码中验证了它。那么为什么以下方法不起作用?
@Controller
public class ExceptionController {
@ExceptionHandler(NullPointerException.class)
public ModelAndView handleNullPointerException(NullPointerException ex) {
// Do some stuff
log.error(logging stuff)
return myModelAndView;
}
}
@Controller
public class AnotherController {
@RequestMapping(value="/nullpointerpath")
public String throwNullPointer() {
throw new NullPointerException();
}
}
我在调试日志中看到要求三个默认异常处理程序来处理异常,但什么也没做,我看到“DispatcherServlet - 无法完成请求”。随后向用户显示堆栈跟踪和 500 内部错误。
最佳答案
确保您的异常处理程序返回一个存在/映射到处理程序的 View 。
关于java - Spring 3 Controller 异常处理器实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2633451/