繁体   English   中英

@ExceptionHandler不处理抛出的异常

[英]@ExceptionHandler doesn't handle the thrown exceptions

我的控制器中有一个方法可以处理应用程序抛出的异常。 所以我有一个像这样的方法。

@Controller
public class ExceptionController {

    @RequestMapping(value="/error")
    @ExceptionHandler(value={Exception.class, NullPointerException.class})
    public String showError(Exception e, Model model){
        return "tiles:error";
    }
}

并尝试我,如果它工作,我在另一个方法控制器中的另一个方法中抛出NullPointerException:

boolean a = true;
if(a){ 
    throw new NullPointerException();
}

抛出异常后,它会在JSP中打印,但它不会抛出我的showError()方法(我在那里设置了一个断点,它永远不会进入)。 showError()方法将捕获异常并根据异常类型显示不同的错误页面(尽管现在它总是显示相同的错误页面)。 如果我转到url / error它会显示错误页面,因此showError()方法是正常的。

我正在使用Spring 3。

可能是什么问题?

谢谢。

如果查看日志,您可能会看到:

java.lang.IllegalStateException@ExceptionHandler方法的不支持的参数[ org.springframework.ui.Model ]

换句话说, @ExceptionHandler方法声明Model参数(请参阅docs )。

删除该参数(无论如何都不使用),它应该按预期工作。

如果要全局处理异常(在控制器之外),则可以使用@ControllerAdvice带注释的类,在该类中放置@ExceptionHandler带注释的方法。

有关示例,请参阅http://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc 并且http://blog.codeleak.pl/2013/11/controlleradvice-improvements-in-spring.html对于在春季4进行的改进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM