Mercurial > hg > orthanc-stone
diff Framework/StoneException.h @ 297:1992f7b8563e am-2
introduced StoneException
author | am@osimis.io |
---|---|
date | Mon, 10 Sep 2018 12:22:05 +0200 |
parents | b04b13810540 |
children | be2660b6e40a |
line wrap: on
line diff
--- a/Framework/StoneException.h Mon Sep 10 12:20:14 2018 +0200 +++ b/Framework/StoneException.h Mon Sep 10 12:22:05 2018 +0200 @@ -22,10 +22,91 @@ #pragma once #include "Core/OrthancException.h" +#include <boost/lexical_cast.hpp> namespace OrthancStone { + enum ErrorCode + { + ErrorCode_Success, + ErrorCode_OrthancError, // this StoneException is actually an OrthancException with an Orthanc error code + ErrorCode_ApplicationException, // this StoneException is specific to an application (and should have its own internal error code) + ErrorCode_NotImplemented, // case not implemented + ErrorCode_PromiseSingleSuccessHandler, // a Promise can only have a single success handler + ErrorCode_PromiseSingleFailureHandler, // a Promise can only have a single failure handler + ErrorCode_Last + }; + + + + class StoneException + { + protected: + OrthancStone::ErrorCode errorCode_; + + public: + explicit StoneException(ErrorCode errorCode) : + errorCode_(errorCode) + { + } + + ErrorCode GetErrorCode() const + { + return errorCode_; + } + + virtual const char* What() const + { + return "TODO: EnumerationToString for StoneException"; + } + }; + + class StoneOrthancException : public StoneException + { + protected: + Orthanc::OrthancException& orthancException_; + + public: + explicit StoneOrthancException(Orthanc::OrthancException& orthancException) : + StoneException(ErrorCode_OrthancError), + orthancException_(orthancException) + { + } + + Orthanc::ErrorCode GetOrthancErrorCode() const + { + return orthancException_.GetErrorCode(); + } + + virtual const char* What() const + { + return orthancException_.What(); + } + }; + + class StoneApplicationException : public StoneException + { + protected: + int applicationErrorCode_; + + public: + explicit StoneApplicationException(int applicationErrorCode) : + StoneException(ErrorCode_ApplicationException), + applicationErrorCode_(applicationErrorCode) + { + } + + int GetApplicationErrorCode() const + { + return applicationErrorCode_; + } + + virtual const char* What() const + { + return boost::lexical_cast<std::string>(applicationErrorCode_).c_str(); + } + }; }