Mercurial > hg > orthanc-stone
comparison Framework/StoneException.h @ 1033:e160159b1905 toa2019100702
Fixed buggy return of stack data
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Mon, 07 Oct 2019 15:09:37 +0200 |
parents | 32eaf4929b08 |
children | efc5b62b9539 |
comparison
equal
deleted
inserted
replaced
1032:43bf09d73e03 | 1033:e160159b1905 |
---|---|
56 explicit StoneException(ErrorCode errorCode) : | 56 explicit StoneException(ErrorCode errorCode) : |
57 errorCode_(errorCode) | 57 errorCode_(errorCode) |
58 { | 58 { |
59 } | 59 } |
60 | 60 |
61 virtual ~StoneException() {} | |
62 | |
61 ErrorCode GetErrorCode() const | 63 ErrorCode GetErrorCode() const |
62 { | 64 { |
63 return errorCode_; | 65 return errorCode_; |
64 } | 66 } |
65 | 67 |
109 | 111 |
110 class StoneApplicationException : public StoneException | 112 class StoneApplicationException : public StoneException |
111 { | 113 { |
112 protected: | 114 protected: |
113 int applicationErrorCode_; | 115 int applicationErrorCode_; |
116 mutable std::string errorMessage_; | |
114 | 117 |
115 public: | 118 public: |
116 explicit StoneApplicationException(int applicationErrorCode) : | 119 explicit StoneApplicationException(int applicationErrorCode) : |
117 StoneException(ErrorCode_ApplicationException), | 120 StoneException(ErrorCode_ApplicationException), |
118 applicationErrorCode_(applicationErrorCode) | 121 applicationErrorCode_(applicationErrorCode) |
124 return applicationErrorCode_; | 127 return applicationErrorCode_; |
125 } | 128 } |
126 | 129 |
127 virtual const char* What() const | 130 virtual const char* What() const |
128 { | 131 { |
129 return boost::lexical_cast<std::string>(applicationErrorCode_).c_str(); | 132 if (errorMessage_.size() == 0) |
133 errorMessage_ = boost::lexical_cast<std::string>(applicationErrorCode_); | |
134 | |
135 return errorMessage_.c_str(); | |
130 } | 136 } |
131 }; | 137 }; |
132 } | 138 } |
133 | 139 |
134 // See https://isocpp.org/wiki/faq/misc-technical-issues#macros-with-multi-stmts | 140 // See https://isocpp.org/wiki/faq/misc-technical-issues#macros-with-multi-stmts |