有无数文章解释了使用我已成功实现的Spring 3 MVC的基本异常处理。所以现在,当我的一个控制器抛出一个Exception类时,它会被我的自定义异常处理程序正确捕获。
但是,我无法让它将Error类抛给我的自定义异常处理程序,这就是我需要的。一些第三方库抛出错误,它只是绕过我的Spring错误处理配置,这似乎只适用于Exception及其子类。
有没有什么方法可以将它配置为在我的自定义异常处理程序中包含错误类型?
以下代码演示了我如何设置我的:
<bean id="exceptionResolver" class="com.test.ExceptionHandler" p:order="2" >
<property name="defaultErrorView" value="error"/>
</bean>
答案 0 :(得分:2)
我们使用的模式是BaseController
所有控制器都使用以下格式扩展,以将特定错误映射到特定HTTP状态,并在异常中捕获更多通用:
@Controller
public class BaseController {
@ExceptionHandler (Exception.class)
@ResponseStatus (HttpStatus.INTERNAL_SERVER_ERROR)
public ModelAndView handleAllExceptions(Exception ex) {
return new JsonError(ex.getMessage()).asModelAndView();
}
@ExceptionHandler (InvalidArticleQueryRangeException.class)
@ResponseStatus (HttpStatus.NOT_FOUND)
public ModelAndView handleAllExceptions(InvalidArticleQueryRangeException ex) {
return new JsonError(ex.getMessage()).asModelAndView();
}
}