6

我正在使用 RestEasy 构建我的 Restful Web 服务。我已经实现了 ExceptionMappers 来准备特定的异常响应。

我还实现了 MessageBodyWriterInterceptors 和几个 PostProcessorInterceptor。

问题:当任何资源不引发任何异常时,一切正常。我的实现按预期工作。调用所有后处理器拦截器和消息正文编写器拦截器。

但是当任何资源方法抛出异常时,注册的 ExceptionMappers 会被调用并创建响应。但在这种情况下,不会遍历后处理器拦截器链。他们没有被叫到。

在这种情况下我该怎么办。在我的异常映射器中编写该拦截器逻辑,或者是否有可用的解决方案?

4

1 回答 1

11

如果抛出异常,则不会调用后处理器。它们位于不同的并行解析路径上:

           /“正常”JAX-RS 响应 -> 后处理器 -> 消息正文编写器
加工
           \ 异常 -> 异常映射器

如果您有需要在后处理器和异常映射器中运行的逻辑,那么您需要将其合并到两者中(最好通过一个通用的实用程序类)。

于 2012-12-18T17:46:16.293 回答