处理所有列出的异常,但使用Spring的@ExceptionHandler注释

时间:2013-06-26 10:06:52

标签: spring spring-mvc

我参考了Spring MVC的@ExceptionHandler注释。

我希望我的@ExceptionHandler-annotated方法能够处理所有异常,但会忽略一两个特定的异常。

Spring MVC 3.2可以实现吗?有没有解决方法?

3 个答案:

答案 0 :(得分:3)

为什么不添加两个处理程序方法,如

@ExceptionHandler(value={Exception.class})
public ModelAndView all(){
    return new ModelAndView();//return general M&V
}

@ExceptionHandler(value={Ex1.class, Ex2.class})
public ModelAndView special(){
    return new ModelAndView();//return special M&V
}

答案 1 :(得分:1)

我认为没有办法用@ExceptionHandler注释来做到这一点。

应该使用的一种方法是提供HandlerExceptionResolver接口的实现。在您的实现中,您可以提供@ExceptionHandler方法中的代码,并仅针对您希望处理的异常执行它。

我认为对于Spring MVC来提取自定义的HandlerExceptionResolver,它只需要在ApplicationContext中注册为bean。

答案 2 :(得分:1)

我不确定这是否会有所帮助,但这就是我本来会做的。

@ExceptionHandler(Throwable.class)
public ModelAndView handleException(Throwable throwable){

    if (throwable != null){
        if (throwable instanceof theExceptionYouWantToIgnore){
            return new ModelAndView("customErrorPage");
        }
//else do your normal business logic and set an appropriate error page
    }
    return errorPage;
}