9

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

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

这对 Spring MVC 3.2 可行吗?有什么解决方法吗?

4

3 回答 3

4

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

@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
}
于 2013-06-26T11:34:13.763 回答
1

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

一种可行的方法是为您提供HandlerExceptionResolver接口的实现。在您的实现中,您可以提供来自 @ExceptionHandler 方法的代码,并且只为您希望处理的异常执行它。

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

于 2013-06-26T11:22:15.893 回答
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;
}
于 2013-06-26T11:56:37.437 回答