Spring 3控制器异常处理程序实现问题

7 java exception-handling spring-mvc

我希望实现一个"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();
  }
}
Run Code Online (Sandbox Code Playgroud)

我在调试日志中看到要求处理异常的三个默认异常处理程序,但没有做任何事情,我看到"DispatcherServlet - 无法完成请求".其次是用户显示堆栈跟踪和500内部错误.

dte*_*eoh 5

确保您的Exception处理程序返回一个存在/映射到处理程序的视图.

  • @predhme,这真的能解决你的问题吗?我有一个像你的例子,只有当从同一个控制器抛出异常时才会调用@ExceptionHandler方法. (2认同)