@Override
        public void exceptionCaught(ChannelHandlerContext ctx, Throwable e) throws Exception {
            Throwable t = e.getCause();
            if ((t instanceof IOException || t instanceof ReadTimeoutException
                    || t instanceof UnresolvedAddressException)) {
                if (t instanceof ReadTimeoutException) {
                    logger.info("Close client {} due to idle.", ctx.channel());
                }
                if (t instanceof UnresolvedAddressException) {
                    logger.info("UnresolvedAddressException for connect {} closed.", addressInfo.getHostPortStr());
                }
                NettyClient.this.close();
            } else {
                logger.error("catch some exception not IOException", e.getCause());
            }
        }
Invoked when an exception was raised by an I/O thread

@param ctx   the channel handler context
@param e     the exception object
inlong-tubemq/tubemq-core/src/main/java/org/apache/inlong/tubemq/corerpc/netty/NettyClient.java