调用其中任何一个时我需要预料到任何异常吗?
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 打开一样。别误会我的意思;我对这种行为非常满意!我可以捕获 channelInactive
或 exceptionCaught
事件,很好地处理它们,并且在我确实关心 write
的地方,我可以监听成功的 future 。
我只是想让有人告诉我,Netty 确实可以让我编写 I/O 内容,而无需无休止的异常处理!我使用的是 Netty 5.0.0.Alpha1。
谢谢!
最佳答案
它不会抛出任何异常,但会通知返回的 ChannelFuture 有关操作的任何异常(或成功)。
关于netty - Netty Channel.write() 或 context.write() 会抛出异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21337748/