Netty channel.write()或context.write()是否会抛出异常?

时间:2014-01-24 16:34:40

标签: 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块。但我似乎无法明确地说明我的假设。

例如,这不会引发任何例外:

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
    });

即使通道已关闭,所有下游处理程序也会处理书面消息,就像通道处于打开状态一样。别误会我的意思;我对这种行为非常满意!我可以抓住channelInactiveexceptionCaught事件,很好地处理它们以及我关心的write我可以聆听成功的未来。

我只是想有人告诉我,Netty确实让我写了i / o的东西而没有无休止的异常处理!我正在使用Netty 5.0.0.Alpha1。

谢谢!

1 个答案:

答案 0 :(得分:4)

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