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