在 Netty 处理程序中管理 CompletionStage

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

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

  1. CompletionStage生成被调用服务内部时出现的异常

  2. 评估返回内容时出现的异常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());

    }

  }


翻翻过去那场雪
浏览 95回答 1
1回答

慕尼黑的夜晚无繁华

是的,您在代码中显示的内容应该正确涵盖两者。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java