Я получил это предупреждение в моем журнале:Нетти - An() событие exceptionCaught был уволен, и он достиг в хвосте трубопровода
Nov 02, 2016 12:07:20 AM io.netty.channel.DefaultChannelPipeline onUnhandledInboundException
WARNUNG: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
java.util.concurrent.TimeoutException
Это мои ChannelHandlers:
@Override
public void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addLast(new LengthFieldBasedFrameDecoder(Integer.MAX_VALUE, 0, 4, 0, 4));
ch.pipeline().addLast(new TimeoutHandler(TIME_OUT_SECONDS));
ch.pipeline().addLast(new ServerCommunicationHandler(messageHandler));
}
Мои TimeoutHandler выдает исключение TimeoutException, если не было чтения за последние 15 секунд. И в моем последнем обработчике ServerCommunicationHandler, я переопределить функцию exeptionCaught:
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
ctx.close();
}
Так что, если я понимаю правильно, я не повторно выдать исключение до конца трубопровода, потому что мой последний обработчик обрабатывает исключение правильно, не так ли?
Зачем мне это предупреждение?
Я использую Нетти 4.1.6.Final
Спасибо за ваш ответ. Я внедрил свой обработчик тайм-аута для уведомления о сроках и если канал не открыт. Я отлаживал свою программу, и да, канал был уже закрыт, когда было исключено исключение. большое спасибо – kaiser