Java 首先是什么-InjectableProvider还是ExceptionMapper?

Java 首先是什么-InjectableProvider还是ExceptionMapper?,java,jersey,jax-rs,Java,Jersey,Jax Rs,我还没有找到上述问题的答案。如何从InjectableProvider抛出异常,并在ExceptionMapper中捕获异常,以便提供自定义响应?

我还没有找到上述问题的答案。如何从InjectableProvider抛出异常,并在ExceptionMapper中捕获异常,以便提供自定义响应?

Pavel

我自己也尝试过:

  • Joda
    DateTime
    injectable提供程序:
    PerRequestTypeInjectableProvider
  • 将异常转换为可按客户端接受的格式(XML、JSON等)序列化的对象的映射程序:
    ExceptionMapper
根据我的实验,在
InjectableProvider
中抛出的任何
WebApplicationException
似乎都会绕过异常映射器,因此格式不正确

我也尝试过:

  • 添加一个
    例外标记
  • 重命名类,希望这些类的连接顺序符合字母顺序
但到目前为止运气不好

@Pavel/泽西岛的任何人:欢迎任何建议

谢谢

马克


更新

如果将
InjectableProvider
中的逻辑包装在
try
/
catch
块中,那么在
catch
块中,技巧是:

  • 创建可序列化的POJO/自定义响应
  • 用适当的状态代码和/或媒体类型将其包装成一个
    javax.ws.rs.core.Response
  • 将其作为实体参数传递给
    WebApplicationException

  • @Pavel/泽西岛的任何人:任何可以避免这种附加逻辑并使事情“正常运转”的替代方案?

    AlexPavel

    我自己也尝试过:

    • Joda
      DateTime
      injectable提供程序:
      PerRequestTypeInjectableProvider
    • 将异常转换为可按客户端接受的格式(XML、JSON等)序列化的对象的映射程序:
      ExceptionMapper
    根据我的实验,在
    InjectableProvider
    中抛出的任何
    WebApplicationException
    似乎都会绕过异常映射器,因此格式不正确

    我也尝试过:

    • 添加一个
      例外标记
    • 重命名类,希望这些类的连接顺序符合字母顺序
    但到目前为止运气不好

    @Pavel/泽西岛的任何人:欢迎任何建议

    谢谢

    马克


    更新

    如果将
    InjectableProvider
    中的逻辑包装在
    try
    /
    catch
    块中,那么在
    catch
    块中,技巧是:

  • 创建可序列化的POJO/自定义响应
  • 用适当的状态代码和/或媒体类型将其包装成一个
    javax.ws.rs.core.Response
  • 将其作为实体参数传递给
    WebApplicationException

  • @Pavel/泽西岛的任何人:有没有其他方法可以避免这种额外的逻辑,让事情“正常运转”?

    你真的试过写一些代码吗?它可以像预期的那样工作。你真的试过写一些代码吗?它可以按预期工作。。