Java 捕获Spring MVC DispatcherServlet异常和ExceptionResolver

Java 捕获Spring MVC DispatcherServlet异常和ExceptionResolver,java,spring-mvc,exception-handling,Java,Spring Mvc,Exception Handling,我试图为SpringMVC服务的每个请求返回一个有效的JSON主体,无论是正确的还是无效的 使用@ExceptionHandler和ExceptionHandlerExceptionResolver的组合,DefaultHandlerExceptionResolver和我自己的AbstractHandlerExceptionResolver我能够处理和设置几乎所有发送到有效控制器或被Spring Security拒绝的无效请求的主体 但是,DispatcherServlet引发的错误(如noHa

我试图为SpringMVC服务的每个请求返回一个有效的JSON主体,无论是正确的还是无效的

使用
@ExceptionHandler
ExceptionHandlerExceptionResolver
的组合,
DefaultHandlerExceptionResolver
和我自己的
AbstractHandlerExceptionResolver
我能够处理和设置几乎所有发送到有效控制器或被Spring Security拒绝的无效请求的主体

但是,
DispatcherServlet
引发的错误(如
noHandlerFound
)无法被拦截,因此响应具有有效的HTTP状态代码(如404),但正文包含Tomcat默认XML错误

有人知道如何设置或配置Spring异常解析器,以便拦截所有失败的请求并设置有效的JSON正文吗?

Spring如何处理dispatcher servlet的异常解析器:

调度器的异常解决策略可以通过 HandlerExceptionResolver,例如,将某些异常映射到 错误页。默认值为AnnotationMethodHandlerExceptionResolver, ResponseStatusExceptionResolver和DefaultHandlerExceptionResolver。 这些HandlerExceptionResolver可以通过 应用程序上下文。HandlerExceptionResolver可以提供给任何bean 名称(按类型进行测试)

为了能够支持Dispatcher异常处理重写,您必须实现
HandlerExceptionResolver
Ordered
类,并将实现声明为Springbean。您必须将
getOrder
值返回为
Integer.MIN\u值
以覆盖任何其他现有处理程序