1

有无数文章解释了我已经成功实现的使用 Spring 3 MVC 的基本异常处理。所以现在当我的一个控制器抛出一个异常类时,它会被我的自定义异常处理程序正确捕获。

但是,我无法让它向我的自定义异常处理程序抛出错误类,这就是我需要的。一些第三方库抛出的错误只是绕过了我的 Spring 错误处理配置,这似乎只适用于 Exception 及其子类。

有什么方法可以将它配置为在我的自定义异常处理程序中也包含错误类型?

以下代码演示了我如何设置我的:

  <bean id="exceptionResolver" class="com.test.ExceptionHandler" p:order="2" >


    <property name="defaultErrorView" value="error"/>
  </bean>
4

1 回答 1

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();
    }
}
于 2013-06-19T15:28:34.263 回答