抛出异常时 Netty 通道关闭

Netty channel closes when exception is thrown

我在客户端模式下设置了 Netty。我有一个带有一个处理程序的简单管道:

MyHandler extends Http2ConnectionHandler implements Http2FrameListener

如果我调用 channel.write() 然后故意在 write 方法中抛出异常,通道会在它到达 exceptionCaught 方法之前关闭。

是什么原因导致 Netty 通道在抛出异常后但在调用 exceptionCaught 之前关闭?

通常,如果您在 "write" 方法中抛出异常,它不会传播到 exceptionCaught,但它会使 write 方法返回的 ChannelFuture 失败。

何时关闭 Channel 取决于许多不同的因素,例如使用的 ChannelFutureListenerChannelOutboundHandler 实现本身。没有更多的信息,这是不可能的。