在调用其中任何一个时,我是否需要预期任何异常?
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
});
即使通道已关闭,所有下游处理程序也会处理书面消息,就像通道处于打开状态一样。别误会我的意思;我对这种行为非常满意!我可以抓住channelInactive
或exceptionCaught
事件,很好地处理它们以及我关心的write
我可以聆听成功的未来。
我只是想有人告诉我,Netty确实让我写了i / o的东西而没有无休止的异常处理!我正在使用Netty 5.0.0.Alpha1。
谢谢!
答案 0 :(得分:4)
它不会抛出任何异常,但会通知返回的ChannelFuture有关操作的任何异常(或成功)。