1
當我需要調用其中任何一個時,我是否需要預料到任何異常?Netty channel.write()或context.write()是否會拋出異常?
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
事件,很好地處理它們,我在乎的地方在於我可以傾聽成功的未來。
我只是想讓別人告訴我,Netty真的讓我寫I/O的東西沒有無盡的異常處理!我正在使用Netty 5.0.0.Alpha1。
謝謝!