我收到以下错误:
org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是java.lang.NullPointerException
为了在控制器中处理这个问题,我使用了以下代码:
@ExceptionHandler(NestedServletException.class)
public ModelAndView handleServletErrors(){
System.out.println("Servlet Exception is thrown");
ModelAndView mv = new ModelAndView("error");
mv.addObject("error", "Error encountered while processing reqeust.");
return mv;
}
但这不能处理上面抛出的异常。然而,如果我使用NullPointerException
类而不是NestedServletException
,它就有效。由于Spring在响应NullPointerException
时抛出异常,不应该由上面的代码处理吗?
答案 0 :(得分:1)
引用@ExceptionHandler
的文档:
用于处理特定处理程序类和/或处理程序方法中的异常的注释。
此注释将允许方法处理由处理程序方法引发的异常,即使用@RequestMapping
注释的方法。引用Spring reference:
您可以使用
@ExceptionHandler
方法执行此操作。在控制器中声明时,此类方法适用于该控制器(或其任何子类)的@RequestMapping
方法引发的异常。您还可以在@ExceptionHandler
类中声明@ControllerAdvice
方法,在这种情况下,它会处理来自许多控制器的@RequestMapping
方法的异常。
由于处理程序抛出的异常是NullPointerException
,异常处理程序方法将处理该特定异常。它不会处理Spring用来封装servlet异常的通用NestedServletException
。