Java 在Netty处理程序内部管理CompletionStage

Java 在Netty处理程序内部管理CompletionStage,java,promise,netty,Java,Promise,Netty,当从Netty处理程序内部调用返回CompletionStage的服务时,如何最好地处理异常 在我看来,有两种类型的异常需要处理: 在被调用服务内部生成CompletionStage时发生的异常 评估返回的CompletionStage 这是否足以涵盖两种情况: @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { try { myService.call

当从Netty处理程序内部调用返回
CompletionStage
的服务时,如何最好地处理异常

在我看来,有两种类型的异常需要处理:

  • 在被调用服务内部生成
    CompletionStage
    时发生的异常
  • 评估返回的
    CompletionStage
  • 这是否足以涵盖两种情况:

    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
      try {
        myService.call(arg1).whenComplete((response, throwable) -> {
          if (throwable != null) {
            ctx.fireExceptionCaught(throwable);
          } else {
            ctx.writeAndFlush(response);
          }
      } catch(Exception e) {
        if (e.getCause() instanceof DecoderException) {
          throw e;
        } else {
          throw new DecoderException(e.getCause());
        }
      }
    

    是的,您在代码中显示的内容应该正确地涵盖这两个方面

    是的,您在代码中显示的内容应该正确地涵盖这两个方面