Changeset 291:d901321d6555 in lemon for lemon/error.h
- Timestamp:
- 10/01/08 11:58:03 (16 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/error.h
r290 r291 42 42 class Exception : public std::exception { 43 43 public: 44 /// \eConstructor45 Exception() {}46 /// \eVirtual destructor44 ///Constructor 45 Exception() throw() {} 46 ///Virtual destructor 47 47 virtual ~Exception() throw() {} 48 /// \eA short description of the exception48 ///A short description of the exception 49 49 virtual const char* what() const throw() { 50 50 return "lemon::Exception"; … … 65 65 66 66 /// Copy constructor 67 IoError(const IoError &error) {67 IoError(const IoError &error) throw() : Exception() { 68 68 message(error._message); 69 69 file(error._file); … … 71 71 72 72 /// Constructor 73 explicit IoError(const char *message) { 74 IoError::message(message); 75 } 76 77 /// Constructor 78 explicit IoError(const std::string &message) { 79 IoError::message(message); 80 } 81 82 /// Constructor 83 IoError(const std::string &file, const char *message) { 73 explicit IoError(const char *message) throw() { 74 IoError::message(message); 75 } 76 77 /// Constructor 78 explicit IoError(const std::string &message) throw() { 79 IoError::message(message); 80 } 81 82 /// Constructor 83 explicit IoError(const char *message, 84 const std::string &file) throw() { 84 85 IoError::message(message); 85 86 IoError::file(file); … … 87 88 88 89 /// Constructor 89 IoError(const std::string &file, const std::string &message) { 90 explicit IoError(const std::string &message, 91 const std::string &file) throw() { 90 92 IoError::message(message); 91 93 IoError::file(file); … … 96 98 97 99 /// Set the error message 98 void message(const char *message) {99 try { 100 _message = message; 101 } catch (...) {} 102 } 103 104 /// Set the error message 105 void message(const std::string& message) {100 void message(const char *message) throw() { 101 try { 102 _message = message; 103 } catch (...) {} 104 } 105 106 /// Set the error message 107 void message(const std::string& message) throw() { 106 108 try { 107 109 _message = message; … … 110 112 111 113 /// Set the file name 112 void file(const std::string &file) {114 void file(const std::string &file) throw() { 113 115 try { 114 116 _file = file; … … 117 119 118 120 /// Returns the error message 119 const std::string& message() const {121 const std::string& message() const throw() { 120 122 return _message; 121 123 } … … 123 125 /// \brief Returns the filename 124 126 /// 125 /// Returns the filename or empty string if the filename was not 126 /// specified. 127 const std::string& file() const { 127 /// Returns the filename or an empty string if it was not specified. 128 const std::string& file() const throw() { 128 129 return _file; 129 130 } … … 131 132 /// \brief Returns a short error message 132 133 /// 133 /// Returns a short error message which contains the message ,the134 /// file name and the line number.134 /// Returns a short error message which contains the message and the 135 /// file name. 135 136 virtual const char* what() const throw() { 136 137 try { … … 138 139 std::ostringstream oss; 139 140 oss << "lemon:IoError" << ": "; 140 oss << message(); 141 if (!file().empty()) { 142 oss << " ("; 143 if (!file().empty()) oss << "with file '" << file() << "'"; 144 oss << ")"; 141 oss << _message; 142 if (!_file.empty()) { 143 oss << " ('" << _file << "')"; 145 144 } 146 145 _what = oss.str(); … … 155 154 /// \brief Format error 156 155 /// 157 /// This class is used to indicate ifan input file has wrong158 /// format ting,or a data representation is not legal.156 /// This exception is thrown when an input file has wrong 157 /// format or a data representation is not legal. 159 158 class FormatError : public Exception { 160 159 protected: … … 167 166 168 167 /// Copy constructor 169 FormatError(const FormatError &error) {168 FormatError(const FormatError &error) throw() : Exception() { 170 169 message(error._message); 171 170 file(error._file); … … 174 173 175 174 /// Constructor 176 explicit FormatError(const char *message) {175 explicit FormatError(const char *message) throw() { 177 176 FormatError::message(message); 178 177 _line = 0; … … 180 179 181 180 /// Constructor 182 explicit FormatError(const std::string &message) {181 explicit FormatError(const std::string &message) throw() { 183 182 FormatError::message(message); 184 183 _line = 0; … … 186 185 187 186 /// Constructor 188 FormatError(const std::string &file, int line, const char *message) { 187 explicit FormatError(const char *message, 188 const std::string &file, int line = 0) throw() { 189 189 FormatError::message(message); 190 190 FormatError::file(file); … … 193 193 194 194 /// Constructor 195 FormatError(const std::string &file, int line, const std::string &message) { 195 explicit FormatError(const std::string &message, 196 const std::string &file, int line = 0) throw() { 196 197 FormatError::message(message); 197 198 FormatError::file(file); … … 203 204 204 205 /// Set the line number 205 void line(int line) { _line = line; }206 207 /// Set the error message 208 void message(const char *message) {209 try { 210 _message = message; 211 } catch (...) {} 212 } 213 214 /// Set the error message 215 void message(const std::string& message) {206 void line(int line) throw() { _line = line; } 207 208 /// Set the error message 209 void message(const char *message) throw() { 210 try { 211 _message = message; 212 } catch (...) {} 213 } 214 215 /// Set the error message 216 void message(const std::string& message) throw() { 216 217 try { 217 218 _message = message; … … 220 221 221 222 /// Set the file name 222 void file(const std::string &file) {223 void file(const std::string &file) throw() { 223 224 try { 224 225 _file = file; … … 229 230 /// 230 231 /// Returns the line number or zero if it was not specified. 231 int line() const { return _line; }232 int line() const throw() { return _line; } 232 233 233 234 /// Returns the error message 234 const std::string& message() const {235 const std::string& message() const throw() { 235 236 return _message; 236 237 } … … 238 239 /// \brief Returns the filename 239 240 /// 240 /// Returns the filename or empty string if the filename was not 241 /// specified. 242 const std::string& file() const { 241 /// Returns the filename or an empty string if it was not specified. 242 const std::string& file() const throw() { 243 243 return _file; 244 244 } … … 253 253 std::ostringstream oss; 254 254 oss << "lemon:FormatError" << ": "; 255 oss << message();256 if (! file().empty() || line()!= 0) {255 oss << _message; 256 if (!_file.empty() || _line != 0) { 257 257 oss << " ("; 258 if (! file().empty()) oss << "in file '" << file()<< "'";259 if (! file().empty() && line()!= 0) oss << " ";260 if ( line() != 0) oss << "at line " << line();258 if (!_file.empty()) oss << "in file '" << _file << "'"; 259 if (!_file.empty() && _line != 0) oss << " "; 260 if (_line != 0) oss << "at line " << _line; 261 261 oss << ")"; 262 262 }
Note: See TracChangeset
for help on using the changeset viewer.