@Override
 public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
   if (cause instanceof ReadTimeoutException) {
     // channel is already closed here by ReadTimeoutHandler
   } else {
     super.exceptionCaught(ctx, cause);
   }
 }
 @Override
 public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
   cause.printStackTrace();
   super.exceptionCaught(ctx, cause);
 }
 @Override
 public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
   super.exceptionCaught(ctx, cause);
 }