title: RabbitMQ throws AlreadyClosedException rather than IOException when the broker connection is lost
body: <p>I'm using rabbitmq java client 2.4.1 the newest version.</p>
  
  <p>After a TCP connection lost, and still call a method on a channel over
  this connection, a AlreadyClosedException will be thrown.</p>
  
  <p>Is it a bug? I expected an IOException,  but AlreadyClosedException I
  got, and AlreadyClosedException is a RuntimeException.</p>
  
  <p>If not, why all other errors cause an IOException.</p>
  
  <pre><code> @Test
   public void testConnectionLost() throws IOException{
             ConnectionFactory factory = new ConnectionFactory();
             factory.setRequestedHeartbeat(60);
             factory.setHost("&lt;your rabbitmq host&gt;");
  
  
             Connection connection = factory.newConnection();
             Channel channel = connection.createChannel();
             connection.close();
  
             try {
                     channel.queueDeclare("queueName", false, false, false, null);
                     Assert.fail("Exception expected.");
             }catch (IOException e) {
                     //it will NOT reach here.
                     //Inner exception should be AlreadyClosedException
                     System.out.println(e);
             }catch (AlreadyClosedException e) {
                     // it will reach here.
                     System.out.println(e);
  
                     //this is strange!
                     //I expected IOException , but AlreadyClosedException I got.
                     //And AlreadyClosedException is a RuntimeException.
             }
  </code></pre>
  
  <p>Thank you.</p>