我参考了Spring MVC的@ExceptionHandler注释。
我希望我的@ExceptionHandler-annotated方法能够处理所有异常,但会忽略一两个特定的异常。
Spring MVC 3.2可以实现吗?有没有解决方法?
答案 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;
}