c++_api/inc/opals/Exception.hpp
1 #pragma once
2 
3 //opals
4 #include "opals/config.hpp"
5 
6 //stl
7 #include <stdexcept>
8 
9 // Exception guidelines for opals programmers:
10 //
11 // Exception classes allow applications to react programmatically on specific error types (without analysing the error message).
12 // The organisation of exception classes into a hierarchy allows applications to react on groups of more specific errors.
13 //
14 // It can be assumed that most errors are caused by incorrect or missing input parameters. So there should be a fine
15 // granulation of classes concerning those errors. All exception classes must be derived from opals::Exceptions::Base,
16 // either directly or indirectly. Exceptions are only throw if the program cannot continue safely. For other "problematic"
17 // situations use a warning log message:
18 // OPALS_LOG(opals::LogLevel::warning) << message
19 //
20 // Opals exception classes provide an error code, which will be the return code of opals executables.
21 // So if you add a new exception class, also add a new opals::ErrorCode enumerator!
22 // To avoid different messages for the same error, offer as few text input as possible. Which means that the exception
23 // itself should set its text in the constructor (see e.g. opals::Exceptions::FileExistence).
24 //
25 // For errors that can only appear if opals module programmers don't use the opals framework correctly, it is
26 // appropriate to simply throw opals::Exception::Internal.
27 // Since the opals framework translates any exceptions to opals exceptions, it
28 // is necessary to add new opals exceptions to the OPALS_EXCEPTIONS preprocessor list in ExceptionProxy.hpp
29 //
30 // Task list when adding a new exception class:
31 // Is there already an exception describing my error? If not, then define a new exception class:
32 // 1) If the new exception describes an existing exception more precisely, then derive from that existing class.
33 // Otherwise, derive from opals::Exceptions::Base
34 // 2) Add a corresponding enumerator to the enumeration opals::ErrorCode
35 // 3) In the constructor, specify a textual description of the error as a prefix to the constructor argument (const char*)
36 // 4) Add the new exception class to the preprocessor list OPALS_EXCEPTIONS in ExceptionProxy.hpp
37 
38 #ifdef _MSC_VER
39 # define _GLIBCXX_USE_NOEXCEPT
40 
41 // disable C4275 warning non dll-interface class for opals::Exceptions::Base
42 # pragma warning( push )
43 # pragma warning( disable : 4275)
44 #endif
45 
46 namespace opals {
47 
48  /// error codes that identify an Exception
49  /** opals executables return these values (instead of exceptions).
50  To be used as return value of the main function. Hence unscoped, with implicit conversion to int.*/
51  namespace ErrorCode
52  {
53  enum Enum
54  {
55  ok = 0, ///< no error
56 
57  unknown, ///< unknown error number, which may appear if exceptions are throw inside used library
58  internally, ///< programming error which appears if the opals framework wasn't used correctly;
59 
60  parameter = 1000, ///< a general parameter error (usually comes from boost::program_options)
61  unknownParameter, ///< thrown if an unknown parameter was set as a command line parameter
62  ambiguousParameter, ///< thrown if there are ambiguities amoung several possible parameter names
63  invalidSyntax, ///< thrown if the command line parameters contain an invalid syntax
64  paramQueriedBeforeSet, ///< thrown if a parameter value is queried although the value has not been set (neither internally, nor externally)
65  fileExistence, ///< thrown if the provided filename doesn't exist.
66  fileReadAccess, ///< thrown if the provided file cannot be accessed for reading.
67  fileWriteAccess, ///< thrown if the provided file cannot be accessed for writing.
68  aliasColumnName, ///< thrown if an alias is set for unknown column name (only predefined column name are allowed)
69  aliasAlreadyDefined, ///< thrown if an alias is used multiple times
70  gdalReadAccess, ///< thrown if the provided file cannot be opened as a GDAL raster (GDALOpen returns NULL)
71  unknownStripName, ///< thrown if a strip name was provided that is unknown
72  xmlParsing, ///< thrown if the provided xml file could not be parsed
73  fileFormatDefinition, ///< thrown if an error in the OPALS file format definition was detected.
74  unknownAttribute, ///< thrown a specified attribute doesn't exists in the corresponding odm.
75  odmReadAccess, ///< thrown if the provided file cannot be opened as an ODM
76  differentCRS, ///< thrown if input data set have different coordinate reference systems
77  missingCRS, ///< thrown if a module requires a coordinate reference systems to be set
78 
79  fileCorrupt = 2000, ///< general file corruption error: thrown if a file to be used is not interpretable
80  logFileCorrupt, ///< thrown if an existing log file shall be used, but the correct position to proceed writing cannot be determined
81  paramFileCorrupt, ///< thrown if an existing parameter file shall be appended to, but the correct position to proceed writing cannot be determined, resulting in a probably ill-formed XML-file
82 
83  licence = 3000, ///< general licence error
84 
85  python = 4000, ///< An error occurred during a call to a Python interpreter. Reflects Python's built-in class exceptions.BaseException
86  /*
87  The hierarchy of Python's built-in Exception classes cannot be represented by only 3 digits.
88  Thus, we do not represent the hierarchy in the error codes.
89  To avoid future changes of error codes due to changes of Python's exception hierarchy, we separate the codes by 10.
90  Note: The following hierarchy is the one of Python 2.7. Since then, exception have been both introduced and removed. Most notably, StandardError has been removed.
91  Python exception class | error code
92  -----------------------------------------------------------
93  BaseException | 4000
94  +-- SystemExit | 4010
95  +-- KeyboardInterrupt | 4020
96  +-- GeneratorExit | 4030
97  +-- Exception | 4040
98  +-- StopIteration | 4050
99  +-- StandardError | 4060
100  | +-- BufferError | 4070
101  | +-- ArithmeticError | 4080
102  | | +-- FloatingPointError | 4090
103  | | +-- OverflowError | 4100
104  | | +-- ZeroDivisionError | 4110
105  | +-- AssertionError | 4120
106  | +-- AttributeError | 4130
107  | +-- EnvironmentError | 4140
108  | | +-- IOError | 4150
109  | | +-- OSError | 4160
110  | | +-- WindowsError (Windows) | 4170
111  | | +-- VMSError (VMS) | 4180
112  | +-- EOFError | 4190
113  | +-- ImportError | 4200
114  | +-- LookupError | 4210
115  | | +-- IndexError | 4220
116  | | +-- KeyError | 4230
117  | +-- MemoryError | 4240
118  | +-- NameError | 4250
119  | | +-- UnboundLocalError | 4260
120  | +-- ReferenceError | 4270
121  | +-- RuntimeError | 4280
122  | | +-- NotImplementedError | 4290
123  | +-- SyntaxError | 4300
124  | | +-- IndentationError | 4310
125  | | +-- TabError | 4320
126  | +-- SystemError | 4330
127  | +-- TypeError | 4340
128  | +-- ValueError | 4350
129  | +-- UnicodeError | 4360
130  | +-- UnicodeDecodeError | 4370
131  | +-- UnicodeEncodeError | 4380
132  | +-- UnicodeTranslateError | 4390
133  +-- Warning | 4400
134  +-- DeprecationWarning | 4410
135  +-- PendingDeprecationWarning | 4420
136  +-- RuntimeWarning | 4430
137  +-- SyntaxWarning | 4440
138  +-- UserWarning | 4450
139  +-- FutureWarning | 4460
140  +-- ImportWarning | 4470
141  +-- UnicodeWarning | 4480
142  +-- BytesWarning | 4490
143  */
144  pythonException = 4040, ///< Reflects Python's built-in class exceptions.Exception
145  /**< All of Python's built-in, non-system-exiting exceptions are derived from that class. */
146  pythonArithmeticError = 4080, ///< Reflects Python's built-in class exceptions.ArithmeticError
147  /**< Python's base class for those built-in exceptions that are raised for various arithmetic errors. */
148  pythonNameError = 4250, ///< Reflects Python's built-in class exceptions.NameError
149  /**< Raised by Python when a local or global name is not found. */
150  pythonSyntaxError = 4300, ///< Reflects Python's built-in class exceptions.SyntaxError
151  /**< Raised by Python when the parser encounters a syntax error. */
152  pythonTypeError = 4340, ///< Reflects Python's built-in class exceptions.TypeError
153  /**< Raised by Python when an operation or function is applied to an object of inappropriate type. */
154  pythonValueError = 4350, ///< Reflects Python's built-in class exceptions.ValueError
155  /**< Raised by Python when a built-in operation or function receives an argument that has the right type but an inappropriate value. */
156 
157  userInterrupt = 5000, ///< thrown by user programmer (in C++ or Python) to stop processing
158 
159  riwaveError = 6000 ///< thrown if an error is reported by the RiWave lib
160  };
161  }
162 
163  /// \namespace opals::Exceptions
164  /// \brief The namespace containing all exception types that may be thrown from within namespace opals
165  /** All exceptions derive from Exceptions::Base (except for Base itself, of course). */
166  namespace Exceptions
167  {
168 
169  /// The base class of all exceptions thrown by opals.
170  class OPALS_API Base : public ::std::runtime_error
171  {
172  public:
173  Base();
174  Base(const char *errorMessage, ErrorCode::Enum errorCode = ErrorCode::unknown);
175  Base(const Base &ref);
176  virtual ~Base() _GLIBCXX_USE_NOEXCEPT;
177 
178  /// returns the error code
179  ErrorCode::Enum errorCode() const;
180  /// returns the actual error message
181  const char* errorMessage() const;
182 
183  /// returns the full error message including the error code: "Error XXXX: Text..."
184  const char* what() const _GLIBCXX_USE_NOEXCEPT;
185 
186  protected:
187  ErrorCode::Enum e_Code;
188  unsigned u_MessagePos;
189 
190  friend class ExceptionCloner;
191  };
192 
193  /// \copydoc ErrorCode::unknown
194  class OPALS_API Unknown : public Base {
195  public:
196  Unknown(const char *errorMessage);
197  };
198 
199  /// \copydoc ErrorCode::internally
200  class OPALS_API Internal : public Base {
201  public:
202  Internal(const char *errorMessage);
203  };
204 
205  /// \copydoc ErrorCode::parameter
206  class OPALS_API Parameter : public Base {
207  public:
208  Parameter(const char *errorMessage);
209  protected:
210  Parameter(const char *errorMessage, ErrorCode::Enum code); ///< Constructor for child classes
211  };
212 
213  /// \copydoc ErrorCode::unknownParameter
214  class OPALS_API UnknownParameter : public Parameter {
215  public:
216  UnknownParameter(const char *errorMessage);
217  };
218 
219  /// \copydoc ErrorCode::ambiguousParameter
220  class OPALS_API AmbiguousParameter : public Parameter {
221  public:
222  AmbiguousParameter(const char *errorMessage);
223  };
224 
225  /// \copydoc ErrorCode::invalidSyntax
226  class OPALS_API InvalidSyntax : public Parameter {
227  public:
228  InvalidSyntax(const char *errorMessage);
229  };
230 
231  /// \copydoc ErrorCode::paramQueriedBeforeSet
232  class OPALS_API ParamQueriedBeforeSet : public Parameter {
233  public:
234  ParamQueriedBeforeSet(const char *errorMessage);
235  };
236 
237  /// \copydoc ErrorCode::fileExistence
238  class OPALS_API FileExistence : public Parameter {
239  public:
240  FileExistence(const char *filename);
241  };
242 
243  /// \copydoc ErrorCode::fileReadAccess
244  class OPALS_API FileReadAccess : public Parameter {
245  public:
246  FileReadAccess(const char *filename);
247  };
248 
249  /// \copydoc ErrorCode::fileWriteAccess
250  class OPALS_API FileWriteAccess : public Parameter {
251  public:
252  FileWriteAccess(const char *filename);
253  };
254 
255  /// \copydoc ErrorCode::odmReadAccess
256  class OPALS_API ODMReadAccess : public Parameter {
257  public:
258  ODMReadAccess(const char *filename);
259  ODMReadAccess(const char *filename, const char *reason);
260  };
261 
262  /// \copydoc ErrorCode::gdalReadAccess
263  class OPALS_API GDALReadAccess : public Parameter {
264  public:
265  GDALReadAccess(const char *filename);
266  };
267 
268  /// \copydoc ErrorCode::aliasColumnName
269  class OPALS_API AliasColumnName : public Parameter {
270  public:
271  AliasColumnName(const char *colname);
272  };
273 
274  /// \copydoc ErrorCode::aliasAlreadyDefined
275  class OPALS_API AliasAlreadyDefined : public Parameter {
276  public:
277  AliasAlreadyDefined(const char *alias);
278  };
279 
280  /// \copydoc ErrorCode::unknownStripName
281  class OPALS_API UnknownStripName : public Parameter {
282  public:
283  UnknownStripName(const char *stripName);
284  };
285 
286  /// \copydoc ErrorCode::xmlParsing
287  class OPALS_API XMLParsing : public Parameter {
288  public:
289  XMLParsing(const char* xmlParser, const char *message);
290  XMLParsing(const char *message);
291  };
292 
293  /// \copydoc ErrorCode::fileFormatDefinition
294  class OPALS_API OpalsFormatDefinition : public Parameter {
295  public:
296  OpalsFormatDefinition(const char *message);
297  };
298 
299  /// \copydoc ErrorCode::unknownAttribute
300  class OPALS_API UnknownAttribute : public Parameter {
301  public:
302  UnknownAttribute(const char *attribute);
303  UnknownAttribute(unsigned count, const char **attributes);
304  UnknownAttribute(const char *filename, unsigned count, const char **attributes);
305  };
306 
307  /// \copydoc ErrorCode::differentCRS
308  class OPALS_API DifferentCRS : public Parameter {
309  public:
310  DifferentCRS(unsigned count, const char **dataSets);
311  };
312 
313  /// \copydoc ErrorCode::missingCRS
314  class OPALS_API MissingCRS : public Parameter {
315  public:
316  MissingCRS();
317  MissingCRS(const char *errorMessage);
318  };
319 
320  /// \copydoc ErrorCode::fileCorrupt
321  class OPALS_API FileCorrupt : public Base {
322  public:
323  FileCorrupt(const char *errorMessage);
324  protected:
325  FileCorrupt(const char *errorMessage, ErrorCode::Enum code); ///< Constructor for child classes
326  };
327 
328  /// \copydoc ErrorCode::logFileCorrupt
329  class OPALS_API LogFileCorrupt : public FileCorrupt {
330  public:
331  LogFileCorrupt(const char *filename);
332  };
333 
334  /// \copydoc ErrorCode::paramFileCorrupt
335  class OPALS_API ParamFileCorrupt : public FileCorrupt {
336  public:
337  ParamFileCorrupt(const char *filename, const char *message = 0 );
338  };
339 
340  /// \copydoc ErrorCode::licence
341  class OPALS_API Licence : public Base {
342  public:
343  Licence(const char *errorMessage);
344  protected:
345  Licence(const char *errorMessage, ErrorCode::Enum code); ///< Constructor for child classes
346  };
347 
348  /// \copydoc ErrorCode::python
349  class OPALS_API Python : public Base {
350  public:
351  Python(const char *errorMessage);
352  protected:
353  Python(const char *errorMessage, ErrorCode::Enum code); ///< Constructor for child classes
354  };
355 
356  /// \copydoc ErrorCode::pythonException
357  class OPALS_API PythonException : public Python {
358  public:
359  PythonException(const char *errorMessage);
360  protected:
361  PythonException(const char *errorMessage, ErrorCode::Enum code);
362  };
363 
364  // Python 3 does not define StandardError, so we derive all Python* exceptions directly from PythonException.
365  /// \copydoc ErrorCode::pythonArithmeticError
366  class OPALS_API PythonArithmeticError : public PythonException {
367  public:
368  PythonArithmeticError(const char *errorMessage);
369  protected:
370  PythonArithmeticError(const char *errorMessage, ErrorCode::Enum code);
371  };
372 
373  /// \copydoc ErrorCode::pythonNameError
374  class OPALS_API PythonNameError : public PythonException {
375  public:
376  PythonNameError(const char *errorMessage);
377  protected:
378  PythonNameError(const char *errorMessage, ErrorCode::Enum code);
379  };
380 
381  /// \copydoc ErrorCode::pythonSyntaxError
382  class OPALS_API PythonSyntaxError : public PythonException {
383  public:
384  PythonSyntaxError(const char *errorMessage);
385  protected:
386  PythonSyntaxError(const char *errorMessage, ErrorCode::Enum code);
387  };
388 
389  /// \copydoc ErrorCode::pythonTypeError
390  class OPALS_API PythonTypeError : public PythonException {
391  public:
392  PythonTypeError(const char *errorMessage);
393  protected:
394  PythonTypeError(const char *errorMessage, ErrorCode::Enum code);
395  };
396 
397  /// \copydoc ErrorCode::pythonValueError
398  class OPALS_API PythonValueError : public PythonException {
399  public:
400  PythonValueError(const char *errorMessage);
401  protected:
402  PythonValueError(const char *errorMessage, ErrorCode::Enum code);
403  };
404 
405  /// \copydoc ErrorCode::userInterrupt
406  class OPALS_API UserInterrupt : public Base {
407  public:
408  UserInterrupt(const char *errorMessage = 0);
409  protected:
410  UserInterrupt(const char *errorMessage, ErrorCode::Enum code); ///< Constructor for child classes
411  };
412 
413  /// \copydoc ErrorCode::riwaveError
414  class OPALS_API RiwaveError : public Base {
415  public:
416  RiwaveError(const char *errorMessage = 0);
417  protected:
418  RiwaveError(const char *errorMessage, ErrorCode::Enum code); ///< Constructor for child classes
419  };
420  } // namespace Exceptions
421 }
422 
423 #ifdef _MSC_VER
424 # pragma warning( pop )
425 #endif
@ missingCRS
thrown if a module requires a coordinate reference systems to be set
Definition: c++_api/inc/opals/Exception.hpp:77
@ invalidSyntax
thrown if the command line parameters contain an invalid syntax
Definition: c++_api/inc/opals/Exception.hpp:63
@ paramFileCorrupt
thrown if an existing parameter file shall be appended to, but the correct position to proceed writin...
Definition: c++_api/inc/opals/Exception.hpp:81
thrown if a strip name was provided that is unknown
Definition: c++_api/inc/opals/Exception.hpp:281
Reflects Python's built-in class exceptions.ArithmeticError.
Definition: c++_api/inc/opals/Exception.hpp:366
general file corruption error: thrown if a file to be used is not interpretable
Definition: c++_api/inc/opals/Exception.hpp:321
@ internally
programming error which appears if the opals framework wasn't used correctly;
Definition: c++_api/inc/opals/Exception.hpp:58
@ fileWriteAccess
thrown if the provided file cannot be accessed for writing.
Definition: c++_api/inc/opals/Exception.hpp:67
@ gdalReadAccess
thrown if the provided file cannot be opened as a GDAL raster (GDALOpen returns NULL)
Definition: c++_api/inc/opals/Exception.hpp:70
Reflects Python's built-in class exceptions.SyntaxError.
Definition: c++_api/inc/opals/Exception.hpp:382
@ fileFormatDefinition
thrown if an error in the OPALS file format definition was detected.
Definition: c++_api/inc/opals/Exception.hpp:73
thrown if an alias is used multiple times
Definition: c++_api/inc/opals/Exception.hpp:275
@ pythonTypeError
Reflects Python's built-in class exceptions.TypeError.
Definition: c++_api/inc/opals/Exception.hpp:152
thrown if the provided filename doesn't exist.
Definition: c++_api/inc/opals/Exception.hpp:238
@ aliasColumnName
thrown if an alias is set for unknown column name (only predefined column name are allowed)
Definition: c++_api/inc/opals/Exception.hpp:68
@ unknownStripName
thrown if a strip name was provided that is unknown
Definition: c++_api/inc/opals/Exception.hpp:71
@ aliasAlreadyDefined
thrown if an alias is used multiple times
Definition: c++_api/inc/opals/Exception.hpp:69
thrown if the command line parameters contain an invalid syntax
Definition: c++_api/inc/opals/Exception.hpp:226
thrown if input data set have different coordinate reference systems
Definition: c++_api/inc/opals/Exception.hpp:308
@ pythonException
Reflects Python's built-in class exceptions.Exception.
Definition: c++_api/inc/opals/Exception.hpp:144
programming error which appears if the opals framework wasn't used correctly;
Definition: c++_api/inc/opals/Exception.hpp:200
@ ok
no error
Definition: c++_api/inc/opals/Exception.hpp:55
thrown if an error in the OPALS file format definition was detected.
Definition: c++_api/inc/opals/Exception.hpp:294
thrown if the provided xml file could not be parsed
Definition: c++_api/inc/opals/Exception.hpp:287
thrown if an error is reported by the RiWave lib
Definition: c++_api/inc/opals/Exception.hpp:414
@ unknownParameter
thrown if an unknown parameter was set as a command line parameter
Definition: c++_api/inc/opals/Exception.hpp:61
unknown error number, which may appear if exceptions are throw inside used library
Definition: c++_api/inc/opals/Exception.hpp:194
Enum
Definition: c++_api/inc/opals/Exception.hpp:53
@ pythonSyntaxError
Reflects Python's built-in class exceptions.SyntaxError.
Definition: c++_api/inc/opals/Exception.hpp:150
@ unknownAttribute
thrown a specified attribute doesn't exists in the corresponding odm.
Definition: c++_api/inc/opals/Exception.hpp:74
@ parameter
a general parameter error (usually comes from boost::program_options)
Definition: c++_api/inc/opals/Exception.hpp:60
thrown if the provided file cannot be opened as a GDAL raster (GDALOpen returns NULL)
Definition: c++_api/inc/opals/Exception.hpp:263
thrown if an unknown parameter was set as a command line parameter
Definition: c++_api/inc/opals/Exception.hpp:214
Reflects Python's built-in class exceptions.TypeError.
Definition: c++_api/inc/opals/Exception.hpp:390
@ riwaveError
thrown if an error is reported by the RiWave lib
Definition: c++_api/inc/opals/Exception.hpp:159
Reflects Python's built-in class exceptions.ValueError.
Definition: c++_api/inc/opals/Exception.hpp:398
This is the fake namespace of all opals Python scripts.
Definition: doc/temp_doxy/python/__init__.py:1
Contains the public interface of OPALS.
Definition: AbsValueOrQuantile.hpp:8
thrown by user programmer (in C++ or Python) to stop processing
Definition: c++_api/inc/opals/Exception.hpp:406
@ pythonNameError
Reflects Python's built-in class exceptions.NameError.
Definition: c++_api/inc/opals/Exception.hpp:148
@ userInterrupt
thrown by user programmer (in C++ or Python) to stop processing
Definition: c++_api/inc/opals/Exception.hpp:157
@ odmReadAccess
thrown if the provided file cannot be opened as an ODM
Definition: c++_api/inc/opals/Exception.hpp:75
thrown if a parameter value is queried although the value has not been set (neither internally,...
Definition: c++_api/inc/opals/Exception.hpp:232
@ unknown
unknown error number, which may appear if exceptions are throw inside used library
Definition: c++_api/inc/opals/Exception.hpp:57
@ pythonArithmeticError
Reflects Python's built-in class exceptions.ArithmeticError.
Definition: c++_api/inc/opals/Exception.hpp:146
thrown if an existing parameter file shall be appended to, but the correct position to proceed writin...
Definition: c++_api/inc/opals/Exception.hpp:335
Reflects Python's built-in class exceptions.NameError.
Definition: c++_api/inc/opals/Exception.hpp:374
@ logFileCorrupt
thrown if an existing log file shall be used, but the correct position to proceed writing cannot be d...
Definition: c++_api/inc/opals/Exception.hpp:80
thrown if an existing log file shall be used, but the correct position to proceed writing cannot be d...
Definition: c++_api/inc/opals/Exception.hpp:329
@ differentCRS
thrown if input data set have different coordinate reference systems
Definition: c++_api/inc/opals/Exception.hpp:76
@ paramQueriedBeforeSet
thrown if a parameter value is queried although the value has not been set (neither internally,...
Definition: c++_api/inc/opals/Exception.hpp:64
thrown if an alias is set for unknown column name (only predefined column name are allowed)
Definition: c++_api/inc/opals/Exception.hpp:269
@ ambiguousParameter
thrown if there are ambiguities amoung several possible parameter names
Definition: c++_api/inc/opals/Exception.hpp:62
@ fileCorrupt
general file corruption error: thrown if a file to be used is not interpretable
Definition: c++_api/inc/opals/Exception.hpp:79
An error occurred during a call to a Python interpreter. Reflects Python's built-in class exceptions....
Definition: c++_api/inc/opals/Exception.hpp:349
@ licence
general licence error
Definition: c++_api/inc/opals/Exception.hpp:83
@ pythonValueError
Reflects Python's built-in class exceptions.ValueError.
Definition: c++_api/inc/opals/Exception.hpp:154
thrown if the provided file cannot be opened as an ODM
Definition: c++_api/inc/opals/Exception.hpp:256
thrown if there are ambiguities amoung several possible parameter names
Definition: c++_api/inc/opals/Exception.hpp:220
general licence error
Definition: c++_api/inc/opals/Exception.hpp:341
a general parameter error (usually comes from boost::program_options)
Definition: c++_api/inc/opals/Exception.hpp:206
@ xmlParsing
thrown if the provided xml file could not be parsed
Definition: c++_api/inc/opals/Exception.hpp:72
Reflects Python's built-in class exceptions.Exception.
Definition: c++_api/inc/opals/Exception.hpp:357
thrown a specified attribute doesn't exists in the corresponding odm.
Definition: c++_api/inc/opals/Exception.hpp:300
The base class of all exceptions thrown by opals.
Definition: c++_api/inc/opals/Exception.hpp:170
thrown if the provided file cannot be accessed for reading.
Definition: c++_api/inc/opals/Exception.hpp:244
thrown if the provided file cannot be accessed for writing.
Definition: c++_api/inc/opals/Exception.hpp:250
@ fileExistence
thrown if the provided filename doesn't exist.
Definition: c++_api/inc/opals/Exception.hpp:65
@ fileReadAccess
thrown if the provided file cannot be accessed for reading.
Definition: c++_api/inc/opals/Exception.hpp:66
thrown if a module requires a coordinate reference systems to be set
Definition: c++_api/inc/opals/Exception.hpp:314