catch (Throwable t)
finally
   public void cancelMessage(Serializable messageID) throws JMSException   {            boolean cancelled = false;      Iterator iter = deliveries.iterator();      try      {                  while (iter.hasNext())         {            SingleReceiverDelivery del = (SingleReceiverDelivery)iter.next();            if (del.getReference().getMessageID().equals(messageID))            {               if (del.cancel())               {                  cancelled = true;                  iter.remove();                  break;               }               else               {                  throw new JMSException("Failed to cancel delivery: " + messageID);               }            }         }      }      catch (Throwable t)      {         log.error("Failed to cancel message", t);         throw new IllegalStateException("Failed to cancel message");      }      if (!cancelled)      {         throw new IllegalStateException("Cannot find delivery to cancel");      }      else      {                  promptDelivery();      }   }