在 Netty 处理程序中管理 CompletionStage
Manage CompletionStage inside of Netty handler
从 Netty 处理程序内部调用 returns 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());
}
}
是的,您在代码中显示的内容应该正确涵盖两者。
从 Netty 处理程序内部调用 returns 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());
}
}
是的,您在代码中显示的内容应该正确涵盖两者。