我希望实现一个“ExceptionController”来处理执行其他控制器方法时抛出的异常。我没有在我的应用程序上下文中指定任何HandlerExceptionResolver,所以根据API documentation AnnotationMethodHandlerExceptionResolver应该启动。我在来源中证实了这一点。那么,为什么以下工作?Spring 3控制器异常处理程序实现问题
@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内部错误。
这似乎是问题所在。 – predhme 2010-04-14 12:36:48
@predhme,那真的能解决你的问题吗?我有一个和你一样的例子,只有当异常从同一个控制器抛出时,才会调用@ExceptionHandler方法。 – curthipster 2010-04-30 05:44:56
我后来也注意到了。我想最重要的是我要设置一个500页和404页,这样如果有什么我没有抓到的,用户就不会看到堆栈跟踪。 – predhme 2010-04-30 13:42:45