gpt4 book ai didi

exception-handling - 为什么 ChannelOutboundHandler 异常没有被 exceptionCaught() 方法捕获? (Netty 4.0.4.Final)

转载 作者:行者123 更新时间:2023-12-04 07:52:33 54 4
gpt4 key购买 nike

(版本:Netty 4.0.4.Final)

如果在 ChannelInboundHandler 中出现异常,我可以在exceptionCaught()处理方法,但如果异常出现在 ChannelOutboundHandler ,我不能。因为,exceptionCaught()不是电话。为什么会这样?

只有通过分析 Future 结果来处理出站异常的方法如下:

channel.writeAndFlush(serverPacket).addListener(new ChannelFutureListener() {
@Override
public void operationComplete(ChannelFuture future) throws Exception {
if (!future.isSuccess()) {
future.cause().printStackTrace();
}
}
});

但这非常不方便。

最佳答案

这是设计使然...出站操作仅通过 Future 通知,否则我们将需要进行双重通知,这会导致一些性能损失。如果您想将其传播到 exceptionCaught 处理程序,您只需将 ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE 作为监听器添加到返回的 ChannelFuture。

关于exception-handling - 为什么 ChannelOutboundHandler 异常没有被 exceptionCaught() 方法捕获? (Netty 4.0.4.Final),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17877611/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com