Spring 3 Controller异常处理程序实现问题


问题内容

我希望实现一个“
ExceptionController”来处理在执行其他控制器的方法时引发的异常。我没有在应用程序上下文中指定任何HandlerExceptionResolver,因此根据API文档,应启动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内部错误。


问题答案:

确保您的异常处理程序正在返回存在/映射到该处理程序的视图。