text: #ifndef MBF_UTILITY__RECOVERY_EXCEPTION_H_
  #define MBF_UTILITY__RECOVERY_EXCEPTION_H_
  
  #include <exception>
  #include <mbf_msgs/RecoveryResult.h>
  
  namespace mbf_utility
  {
  
  struct RecoveryException : public std::exception
  {
    RecoveryException(unsigned int error_code) : outcome(error_code){}
  
    const char * what () const throw () {
      switch(outcome)
      {
        case mbf_msgs::RecoveryResult::FAILURE: return "Failure";
        case mbf_msgs::RecoveryResult::CANCELED: return "Canceled";
        case mbf_msgs::RecoveryResult::PAT_EXCEEDED: return "Patience exceeded";
        case mbf_msgs::RecoveryResult::TF_ERROR: return "TF Error";
        case mbf_msgs::RecoveryResult::NOT_INITIALIZED: return "Not initialized";
        case mbf_msgs::RecoveryResult::INVALID_PLUGIN: return "Invalid Plugin";
        case mbf_msgs::RecoveryResult::INTERNAL_ERROR: return "Internal Error";
        case mbf_msgs::RecoveryResult::STOPPED: return "Stopped";
        default: return "unknown error code: " + outcome;
      }
    }
    unsigned int outcome;
  };
  
  } /* namespace mbf_utility */
  
  #endif // MBF_UTILITY__RECOVERY_EXCEPTION_H_
  