Java 执行StreamingOutput时不使用JAX RS ExceptionMapper

Java 执行StreamingOutput时不使用JAX RS ExceptionMapper,java,jersey,streaming,jax-rs,Java,Jersey,Streaming,Jax Rs,我在JAX-RS应用程序(Jersey 1.19)中有一个异常映射器: 但如果我这样做流式输出: @GET @Path("/test2") public String test2() { return new StreamingOutput() { @Override public void write(OutputStream output) { throw new IllegalArgumentException("exception 2"); }

我在JAX-RS应用程序(Jersey 1.19)中有一个异常映射器:

但如果我这样做流式输出:

@GET
@Path("/test2")
public String test2() {
  return new StreamingOutput() {
    @Override
    public void write(OutputStream output) {
      throw new IllegalArgumentException("exception 2");
    }
  };
}

然后,不使用异常映射器,并且客户端获得HTTP状态500。那么,我如何才能强制它使用异常映射器呢?

对我来说很好,除了您的代码无法编译,而且您从未真正抛出异常映射之外exception@peeskillet哦,对不起,我在有问题的代码示例中添加了缺少的“throw”。但是我实际上使用了正确的代码进行了测试,并且没有使用映射器,那么您能告诉我您使用的是哪种实现,也是Jersey 1.19吗?@WojciechGdela您能解决这个问题吗?如果是这样的话,如何解决呢?我没有采用
IllegalArgumentException
而是直接抛出
javax.ws.rs.WebApplicationException
,带有适当的状态代码和消息。对我来说效果很好,除了你的代码没有编译,而且你从来没有真正抛出exception@peeskillet哦,对不起,我加上了丢失的“扔“在所讨论的代码示例中。但是我实际上使用了正确的代码进行了测试,并且没有使用映射器,那么您能告诉我您使用的是哪种实现,也是Jersey 1.19吗?@WojciechGdela您能解决这个问题吗?如果是这样的话,如何解决呢?我没有采用
IllegalArgumentException
而是直接抛出
javax.ws.rs.WebApplicationException
,带有适当的状态代码和消息。对我来说效果很好,除了你的代码没有编译,而且你从来没有真正抛出exception@peeskillet哦,对不起,我加上了丢失的“扔“在所讨论的代码示例中。但是我实际上使用了正确的代码进行了测试,并且没有使用映射器,那么您能告诉我您使用的是哪种实现,也是Jersey 1.19吗?@WojciechGdela您能解决这个问题吗?如果是这样的话,如何解决呢?我做了变通:我没有使用适当的状态代码和消息直接抛出
javax.ws.rs.WebApplicationException
而不是
IllegalArgumentException
@GET
@Path("/test1")
public String test2() {
  throw new IllegalArgumentException("exception 1");
}
@GET
@Path("/test2")
public String test2() {
  return new StreamingOutput() {
    @Override
    public void write(OutputStream output) {
      throw new IllegalArgumentException("exception 2");
    }
  };
}