code: public int getExceptionReason() {
      Throwable cause = getCause();
      
      if (cause instanceof Reasonable)
        return ((Reasonable)cause).getExceptionReason();
      else if (cause instanceof SIException)
        return ((SIException)cause).getExceptionReason();
      else if (cause instanceof SIErrorException)
        return ((SIErrorException)cause).getExceptionReason();
      else
        return Reasonable.DEFAULT_REASON;   
    }
docs: Returns an integer that indicates the reason a message could not be
  delivered. Some subclasses of SIException can indicate a failure to deliver
  a message (i.e. those thrown by SICoreConnection.createProducerSession and
  send). These subclasses will include a specific exception reason, chosen
  from those documented in com.ibm.websphere.sib.SIRCConstants, to indicate
  the reason that the message could not be delivered. All other
  exceptions will just return SIRC0001_DELIVERY_ERROR.
  
  @return the exception reason