title: Will a Netty channel.write() or context.write() ever throw an exception?
body: <p>Do I need to expect any exceptions when calling any of these?</p>
  
  <pre><code>io.netty.channel.Channel.write(...)
  io.netty.channel.Channel.flush(...)
  io.netty.channel.Channel.writeAndFlush(...)
  io.netty.channel.ChannelHandlerContext.write(...)
  io.netty.channel.ChannelHandlerContext.writeAndFlush(...)
  </code></pre>
  
  <p>It seems not. There are no checked exceptions, no throws are documented and I haven't seen any try/catch blocks in any example code. Yet I can't seem to find my assumption stated explicitly.</p>
  
  <p>For example this does not throw any exceptions:</p>
  
  <pre><code>ChannelFuture closeFuture = channel.close();
  closeFuture.addListener(new ChannelFutureListener() {
      @Override
      public void operationComplete(ChannelFuture future) throws Exception
      {
          channel.writeAndFlush(msg); // No exception when writing to closed channel
      });
  </code></pre>
  
  <p>Even though the channel is closed the written message is processed by all the downstream handlers as if the channel were open. Don't get me wrong; I'm perfectly happy with this behaviour! I can catch the <code>channelInactive</code> or <code>exceptionCaught</code> events, deal with them nicely and where I do care about the <code>write</code> I can listen for a successful future.</p>
  
  <p>I just want someone to tell me that Netty really does let me write i/o stuff without endless exception handling! I'm using Netty 5.0.0.Alpha1.</p>
  
  <p>Thanks!</p>