netty - Netty Channel.write() 或 context.write() 会抛出异常吗?

标签 netty

调用其中任何一个时我需要预料到任何异常吗?

io.netty.channel.Channel.write(...)
io.netty.channel.Channel.flush(...)
io.netty.channel.Channel.writeAndFlush(...)
io.netty.channel.ChannelHandlerContext.write(...)
io.netty.channel.ChannelHandlerContext.writeAndFlush(...)

看来不是。没有检查异常,没有记录抛出,并且我没有在任何示例代码中看到任何 try/catch block 。但我似乎找不到明确表述的假设。

例如,这不会引发任何异常:

ChannelFuture closeFuture = channel.close();
closeFuture.addListener(new ChannelFutureListener() {
    @Override
    public void operationComplete(ChannelFuture future) throws Exception
    {
        channel.writeAndFlush(msg); // No exception when writing to closed channel
    });

即使 channel 关闭,所有下游处理程序也会处理写入的消息,就像 channel 打开一样。别误会我的意思;我对这种行为非常满意!我可以捕获 channelInactiveexceptionCaught 事件,很好地处理它们,并且在我确实关心 write 的地方,我可以监听成功的 future 。

我只是想让有人告诉我,Netty 确实可以让我编写 I/O 内容,而无需无休止的异常处理!我使用的是 Netty 5.0.0.Alpha1。

谢谢!

最佳答案

它不会抛出任何异常,但会通知返回的 ChannelFuture 有关操作的任何异常(或成功)。

关于netty - Netty Channel.write() 或 context.write() 会抛出异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21337748/

相关文章:

java - Netty 分块输入流

netty - 如何有效地从 ByteBuf 中获取一个短数组?

java - 如何在各种消息事件之间传递参数

java - Haproxy + 网络 : Way to prevent exceptions on connection reset?

Java Netty - 根据输入消息将结果作为 StringEncoder 或 ObjectEncoder 发送到客户端?

java - netty 4.1正确释放引用计数的ByteBuf对象

java - Webflux + Netty NIO 相比传统IO性能下降~30倍

java - 将 netty 与 ssl 证书一起使用的简单方法?

java - 在 tomcat 服务器内为 grpc 托管多个 netty 服务器,应用程序重新部署问题

java - JConsole 总加载类行为