Netty 4.0 EncoderException 丢失

Netty 4.0 EncoderException loss

我正在使用 Netty 4.0。32.Final。

当 NPE 出现在我的编解码器中并带有这样的堆栈跟踪时:

my.Codec.encode(Codec.java:27)
io.netty.handler.codec.ByteToMessageCodec$Encoder.encode(ByteToMessageCodec.java:168)
io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107)
io.netty.handler.codec.ByteToMessageCodec.write(ByteToMessageCodec.java:108)
io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:633)
io.netty.channel.AbstractChannelHandlerContext.access00(AbstractChannelHandlerContext.java:32)
io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.write(AbstractChannelHandlerContext.java:908)
io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:960)
io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:893)
io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:358)
io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357)
io.netty.util.concurrent.SingleThreadEventExecutor.run(SingleThreadEventExecutor.java:112)
java.lang.Thread.run(Thread.java:745)

它消失在某处。以至于我无法在另一个 Hanler 的 exceptionCaught 方法中处理它。

它是一个 "outbound exception",因此不会出现在 exceptionCaught(...) 中。 exceptionCaught(...) 仅针对入站异常进行通知。之前的write(...)操作的ChannelFuture会异常失败。