我正在使用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.access$1900(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$2.run(SingleThreadEventExecutor.java:112)
java.lang.Thread.run(Thread.java:745)
它消失在某个地方。所以我无法用另一个汉勒的exceptionCaught
方法处理它。
答案 0 :(得分:1)
这是一个“出站异常”,因此不会出现在exceptionCaught(...)中。 exceptionCaught(...)仅通知入站异常。上一次写入(...)操作的ChannelFuture将失败,但有例外。