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  test, ///< test exceptions are thrown if the common parameter testErrorProbability is activated
60 
61  parameter = 1000, ///< a general parameter error (usually comes from boost::program_options)
62  unknownParameter, ///< thrown if an unknown parameter was set as a command line parameter
63  ambiguousParameter, ///< thrown if there are ambiguities amoung several possible parameter names
64  invalidSyntax, ///< thrown if the command line parameters contain an invalid syntax
65  paramQueriedBeforeSet, ///< thrown if a parameter value is queried although the value has not been set (neither internally, nor externally)
66  fileExistence, ///< thrown if the provided filename doesn't exist.
67  fileReadAccess, ///< thrown if the provided file cannot be accessed for reading.
68  fileWriteAccess, ///< thrown if the provided file cannot be accessed for writing.
69  aliasColumnName, ///< thrown if an alias is set for unknown column name (only predefined column name are allowed)
70  aliasAlreadyDefined, ///< thrown if an alias is used multiple times
71  gdalReadAccess, ///< thrown if the provided file cannot be opened as a GDAL raster (GDALOpen returns NULL)
72  unknownStripName, ///< thrown if a strip name was provided that is unknown
73  xmlParsing, ///< thrown if the provided xml file could not be parsed
74  fileFormatDefinition, ///< thrown if an error in the OPALS file format definition was detected.
75  unknownAttribute, ///< thrown a specified attribute doesn't exists in the corresponding odm.
76  odmReadAccess, ///< thrown if the provided file cannot be opened as an ODM
77  differentCRS, ///< thrown if input data set have different coordinate reference systems
78  missingCRS, ///< thrown if a module requires a coordinate reference systems to be set
79 
80  fileCorrupt = 2000, ///< general file corruption error: thrown if a file to be used is not interpretable
81  logFileCorrupt, ///< thrown if an existing log file shall be used, but the correct position to proceed writing cannot be determined
82  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
83 
84  licence = 3000, ///< general licence error
85 
86  python = 4000, ///< An error occurred during a call to a Python interpreter. Reflects Python's built-in class exceptions.BaseException
87  /*
88  The hierarchy of Python's built-in Exception classes cannot be represented by only 3 digits.
89  Thus, we do not represent the hierarchy in the error codes.
90  To avoid future changes of error codes due to changes of Python's exception hierarchy, we separate the codes by 10.
91  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.
92  Python exception class | error code
93  -----------------------------------------------------------
94  BaseException | 4000
95  +-- SystemExit | 4010
96  +-- KeyboardInterrupt | 4020
97  +-- GeneratorExit | 4030
98  +-- Exception | 4040
99  +-- StopIteration | 4050
100  +-- StandardError | 4060
101  | +-- BufferError | 4070
102  | +-- ArithmeticError | 4080
103  | | +-- FloatingPointError | 4090
104  | | +-- OverflowError | 4100
105  | | +-- ZeroDivisionError | 4110
106  | +-- AssertionError | 4120
107  | +-- AttributeError | 4130
108  | +-- EnvironmentError | 4140
109  | | +-- IOError | 4150
110  | | +-- OSError | 4160
111  | | +-- WindowsError (Windows) | 4170
112  | | +-- VMSError (VMS) | 4180
113  | +-- EOFError | 4190
114  | +-- ImportError | 4200
115  | +-- LookupError | 4210
116  | | +-- IndexError | 4220
117  | | +-- KeyError | 4230
118  | +-- MemoryError | 4240
119  | +-- NameError | 4250
120  | | +-- UnboundLocalError | 4260
121  | +-- ReferenceError | 4270
122  | +-- RuntimeError | 4280
123  | | +-- NotImplementedError | 4290
124  | +-- SyntaxError | 4300
125  | | +-- IndentationError | 4310
126  | | +-- TabError | 4320
127  | +-- SystemError | 4330
128  | +-- TypeError | 4340
129  | +-- ValueError | 4350
130  | +-- UnicodeError | 4360
131  | +-- UnicodeDecodeError | 4370
132  | +-- UnicodeEncodeError | 4380
133  | +-- UnicodeTranslateError | 4390
134  +-- Warning | 4400
135  +-- DeprecationWarning | 4410
136  +-- PendingDeprecationWarning | 4420
137  +-- RuntimeWarning | 4430
138  +-- SyntaxWarning | 4440
139  +-- UserWarning | 4450
140  +-- FutureWarning | 4460
141  +-- ImportWarning | 4470
142  +-- UnicodeWarning | 4480
143  +-- BytesWarning | 4490
144  */
145  pythonException = 4040, ///< Reflects Python's built-in class exceptions.Exception
146  /**< All of Python's built-in, non-system-exiting exceptions are derived from that class. */
147  pythonArithmeticError = 4080, ///< Reflects Python's built-in class exceptions.ArithmeticError
148  /**< Python's base class for those built-in exceptions that are raised for various arithmetic errors. */
149  pythonNameError = 4250, ///< Reflects Python's built-in class exceptions.NameError
150  /**< Raised by Python when a local or global name is not found. */
151  pythonSyntaxError = 4300, ///< Reflects Python's built-in class exceptions.SyntaxError
152  /**< Raised by Python when the parser encounters a syntax error. */
153  pythonTypeError = 4340, ///< Reflects Python's built-in class exceptions.TypeError
154  /**< Raised by Python when an operation or function is applied to an object of inappropriate type. */
155  pythonValueError = 4350, ///< Reflects Python's built-in class exceptions.ValueError
156  /**< Raised by Python when a built-in operation or function receives an argument that has the right type but an inappropriate value. */
157 
158  userInterrupt = 5000, ///< thrown by user programmer (in C++ or Python) to stop processing
159 
160  riwaveError = 6000 ///< thrown if an error is reported by the RiWave lib
161  };
162  }
163 
164  /// \namespace opals::Exceptions
165  /// \brief The namespace containing all exception types that may be thrown from within namespace opals
166  /** All exceptions derive from Exceptions::Base (except for Base itself, of course). */
167  namespace Exceptions
168  {
169 
170  /// The base class of all exceptions thrown by opals.
171  class OPALS_API Base : public ::std::runtime_error
172  {
173  public:
174  Base();
175  Base(const char *errorMessage, ErrorCode::Enum errorCode = ErrorCode::unknown);
176  Base(const Base &ref);
177  virtual ~Base() _GLIBCXX_USE_NOEXCEPT;
178 
179  /// returns the error code
180  ErrorCode::Enum errorCode() const;
181  /// returns the actual error message
182  const char* errorMessage() const;
183 
184  /// returns the full error message including the error code: "Error XXXX: Text..."
185  const char* what() const _GLIBCXX_USE_NOEXCEPT;
186 
187  protected:
188  ErrorCode::Enum e_Code;
189  unsigned u_MessagePos;
190 
191  friend class ExceptionCloner;
192  };
193 
194  /// \copydoc ErrorCode::unknown
195  class OPALS_API Unknown : public Base {
196  public:
197  Unknown(const char *errorMessage);
198  };
199 
200  /// \copydoc ErrorCode::internally
201  class OPALS_API Internal : public Base {
202  public:
203  Internal(const char *errorMessage);
204  };
205 
206  /// \copydoc ErrorCode::test
207  class OPALS_API Test : public Base {
208  public:
209  Test();
210  };
211 
212  /// \copydoc ErrorCode::parameter
213  class OPALS_API Parameter : public Base {
214  public:
215  Parameter(const char *errorMessage);
216  protected:
217  Parameter(const char *errorMessage, ErrorCode::Enum code); ///< Constructor for child classes
218  };
219 
220  /// \copydoc ErrorCode::unknownParameter
221  class OPALS_API UnknownParameter : public Parameter {
222  public:
223  UnknownParameter(const char *errorMessage);
224  };
225 
226  /// \copydoc ErrorCode::ambiguousParameter
227  class OPALS_API AmbiguousParameter : public Parameter {
228  public:
229  AmbiguousParameter(const char *errorMessage);
230  };
231 
232  /// \copydoc ErrorCode::invalidSyntax
233  class OPALS_API InvalidSyntax : public Parameter {
234  public:
235  InvalidSyntax(const char *errorMessage);
236  };
237 
238  /// \copydoc ErrorCode::paramQueriedBeforeSet
239  class OPALS_API ParamQueriedBeforeSet : public Parameter {
240  public:
241  ParamQueriedBeforeSet(const char *errorMessage);
242  };
243 
244  /// \copydoc ErrorCode::fileExistence
245  class OPALS_API FileExistence : public Parameter {
246  public:
247  FileExistence(const char *filename);
248  };
249 
250  /// \copydoc ErrorCode::fileReadAccess
251  class OPALS_API FileReadAccess : public Parameter {
252  public:
253  FileReadAccess(const char *filename, const char *msg = 0);
254  };
255 
256  /// \copydoc ErrorCode::fileWriteAccess
257  class OPALS_API FileWriteAccess : public Parameter {
258  public:
259  FileWriteAccess(const char *filename, const char *msg = 0);
260  };
261 
262  /// \copydoc ErrorCode::odmReadAccess
263  class OPALS_API ODMReadAccess : public Parameter {
264  public:
265  ODMReadAccess(const char *filename);
266  ODMReadAccess(const char *filename, const char *reason);
267  };
268 
269  /// \copydoc ErrorCode::gdalReadAccess
270  class OPALS_API GDALReadAccess : public Parameter {
271  public:
272  GDALReadAccess(const char *filename);
273  };
274 
275  /// \copydoc ErrorCode::aliasColumnName
276  class OPALS_API AliasColumnName : public Parameter {
277  public:
278  AliasColumnName(const char *colname);
279  };
280 
281  /// \copydoc ErrorCode::aliasAlreadyDefined
282  class OPALS_API AliasAlreadyDefined : public Parameter {
283  public:
284  AliasAlreadyDefined(const char *alias);
285  };
286 
287  /// \copydoc ErrorCode::unknownStripName
288  class OPALS_API UnknownStripName : public Parameter {
289  public:
290  UnknownStripName(const char *stripName);
291  };
292 
293  /// \copydoc ErrorCode::xmlParsing
294  class OPALS_API XMLParsing : public Parameter {
295  public:
296  XMLParsing(const char* xmlParser, const char *message);
297  XMLParsing(const char *message);
298  };
299 
300  /// \copydoc ErrorCode::fileFormatDefinition
301  class OPALS_API OpalsFormatDefinition : public Parameter {
302  public:
303  OpalsFormatDefinition(const char *message);
304  };
305 
306  /// \copydoc ErrorCode::unknownAttribute
307  class OPALS_API UnknownAttribute : public Parameter {
308  public:
309  UnknownAttribute(const char *attribute);
310  UnknownAttribute(unsigned count, const char **attributes, bool filterFlag = false);
311  UnknownAttribute(const char *filename, unsigned count, const char **attributes, bool filterFlag = false);
312  };
313 
314  /// \copydoc ErrorCode::differentCRS
315  class OPALS_API DifferentCRS : public Parameter {
316  public:
317  DifferentCRS(unsigned count, const char **dataSets);
318  };
319 
320  /// \copydoc ErrorCode::missingCRS
321  class OPALS_API MissingCRS : public Parameter {
322  public:
323  MissingCRS();
324  MissingCRS(const char *errorMessage);
325  };
326 
327  /// \copydoc ErrorCode::fileCorrupt
328  class OPALS_API FileCorrupt : public Base {
329  public:
330  FileCorrupt(const char *errorMessage);
331  protected:
332  FileCorrupt(const char *errorMessage, ErrorCode::Enum code); ///< Constructor for child classes
333  };
334 
335  /// \copydoc ErrorCode::logFileCorrupt
336  class OPALS_API LogFileCorrupt : public FileCorrupt {
337  public:
338  LogFileCorrupt(const char *filename);
339  };
340 
341  /// \copydoc ErrorCode::paramFileCorrupt
342  class OPALS_API ParamFileCorrupt : public FileCorrupt {
343  public:
344  ParamFileCorrupt(const char *filename, const char *message = 0 );
345  };
346 
347  /// \copydoc ErrorCode::licence
348  class OPALS_API Licence : public Base {
349  public:
350  Licence(const char *errorMessage);
351  protected:
352  Licence(const char *errorMessage, ErrorCode::Enum code); ///< Constructor for child classes
353  };
354 
355  /// \copydoc ErrorCode::python
356  class OPALS_API Python : public Base {
357  public:
358  Python(const char *errorMessage);
359  protected:
360  Python(const char *errorMessage, ErrorCode::Enum code); ///< Constructor for child classes
361  };
362 
363  /// \copydoc ErrorCode::pythonException
364  class OPALS_API PythonException : public Python {
365  public:
366  PythonException(const char *errorMessage);
367  protected:
368  PythonException(const char *errorMessage, ErrorCode::Enum code);
369  };
370 
371  // Python 3 does not define StandardError, so we derive all Python* exceptions directly from PythonException.
372  /// \copydoc ErrorCode::pythonArithmeticError
373  class OPALS_API PythonArithmeticError : public PythonException {
374  public:
375  PythonArithmeticError(const char *errorMessage);
376  protected:
377  PythonArithmeticError(const char *errorMessage, ErrorCode::Enum code);
378  };
379 
380  /// \copydoc ErrorCode::pythonNameError
381  class OPALS_API PythonNameError : public PythonException {
382  public:
383  PythonNameError(const char *errorMessage);
384  protected:
385  PythonNameError(const char *errorMessage, ErrorCode::Enum code);
386  };
387 
388  /// \copydoc ErrorCode::pythonSyntaxError
389  class OPALS_API PythonSyntaxError : public PythonException {
390  public:
391  PythonSyntaxError(const char *errorMessage);
392  protected:
393  PythonSyntaxError(const char *errorMessage, ErrorCode::Enum code);
394  };
395 
396  /// \copydoc ErrorCode::pythonTypeError
397  class OPALS_API PythonTypeError : public PythonException {
398  public:
399  PythonTypeError(const char *errorMessage);
400  protected:
401  PythonTypeError(const char *errorMessage, ErrorCode::Enum code);
402  };
403 
404  /// \copydoc ErrorCode::pythonValueError
405  class OPALS_API PythonValueError : public PythonException {
406  public:
407  PythonValueError(const char *errorMessage);
408  protected:
409  PythonValueError(const char *errorMessage, ErrorCode::Enum code);
410  };
411 
412  /// \copydoc ErrorCode::userInterrupt
413  class OPALS_API UserInterrupt : public Base {
414  public:
415  UserInterrupt(const char *errorMessage = 0);
416  protected:
417  UserInterrupt(const char *errorMessage, ErrorCode::Enum code); ///< Constructor for child classes
418  };
419 
420  /// \copydoc ErrorCode::riwaveError
421  class OPALS_API RiwaveError : public Base {
422  public:
423  RiwaveError(const char *errorMessage = 0);
424  protected:
425  RiwaveError(const char *errorMessage, ErrorCode::Enum code); ///< Constructor for child classes
426  };
427  } // namespace Exceptions
428 }
429 
430 #ifdef _MSC_VER
431 # pragma warning( pop )
432 #endif
@ missingCRS
thrown if a module requires a coordinate reference systems to be set
Definition: c++_api/inc/opals/Exception.hpp:78
@ invalidSyntax
thrown if the command line parameters contain an invalid syntax
Definition: c++_api/inc/opals/Exception.hpp:64
@ 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:82
thrown if a strip name was provided that is unknown
Definition: c++_api/inc/opals/Exception.hpp:288
Reflects Python's built-in class exceptions.ArithmeticError.
Definition: c++_api/inc/opals/Exception.hpp:373
general file corruption error: thrown if a file to be used is not interpretable
Definition: c++_api/inc/opals/Exception.hpp:328
@ 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:68
@ gdalReadAccess
thrown if the provided file cannot be opened as a GDAL raster (GDALOpen returns NULL)
Definition: c++_api/inc/opals/Exception.hpp:71
Reflects Python's built-in class exceptions.SyntaxError.
Definition: c++_api/inc/opals/Exception.hpp:389
@ fileFormatDefinition
thrown if an error in the OPALS file format definition was detected.
Definition: c++_api/inc/opals/Exception.hpp:74
thrown if an alias is used multiple times
Definition: c++_api/inc/opals/Exception.hpp:282
@ pythonTypeError
Reflects Python's built-in class exceptions.TypeError.
Definition: c++_api/inc/opals/Exception.hpp:153
thrown if the provided filename doesn't exist.
Definition: c++_api/inc/opals/Exception.hpp:245
@ aliasColumnName
thrown if an alias is set for unknown column name (only predefined column name are allowed)
Definition: c++_api/inc/opals/Exception.hpp:69
@ unknownStripName
thrown if a strip name was provided that is unknown
Definition: c++_api/inc/opals/Exception.hpp:72
@ aliasAlreadyDefined
thrown if an alias is used multiple times
Definition: c++_api/inc/opals/Exception.hpp:70
thrown if the command line parameters contain an invalid syntax
Definition: c++_api/inc/opals/Exception.hpp:233
thrown if input data set have different coordinate reference systems
Definition: c++_api/inc/opals/Exception.hpp:315
@ pythonException
Reflects Python's built-in class exceptions.Exception.
Definition: c++_api/inc/opals/Exception.hpp:145
programming error which appears if the opals framework wasn't used correctly;
Definition: c++_api/inc/opals/Exception.hpp:201
@ 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:301
thrown if the provided xml file could not be parsed
Definition: c++_api/inc/opals/Exception.hpp:294
thrown if an error is reported by the RiWave lib
Definition: c++_api/inc/opals/Exception.hpp:421
test exceptions are thrown if the common parameter testErrorProbability is activated
Definition: c++_api/inc/opals/Exception.hpp:207
@ unknownParameter
thrown if an unknown parameter was set as a command line parameter
Definition: c++_api/inc/opals/Exception.hpp:62
unknown error number, which may appear if exceptions are throw inside used library
Definition: c++_api/inc/opals/Exception.hpp:195
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:151
@ unknownAttribute
thrown a specified attribute doesn't exists in the corresponding odm.
Definition: c++_api/inc/opals/Exception.hpp:75
@ parameter
a general parameter error (usually comes from boost::program_options)
Definition: c++_api/inc/opals/Exception.hpp:61
thrown if the provided file cannot be opened as a GDAL raster (GDALOpen returns NULL)
Definition: c++_api/inc/opals/Exception.hpp:270
thrown if an unknown parameter was set as a command line parameter
Definition: c++_api/inc/opals/Exception.hpp:221
Reflects Python's built-in class exceptions.TypeError.
Definition: c++_api/inc/opals/Exception.hpp:397
@ riwaveError
thrown if an error is reported by the RiWave lib
Definition: c++_api/inc/opals/Exception.hpp:160
Reflects Python's built-in class exceptions.ValueError.
Definition: c++_api/inc/opals/Exception.hpp:405
This is the fake namespace of all opals Python scripts.
Definition: __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:413
@ pythonNameError
Reflects Python's built-in class exceptions.NameError.
Definition: c++_api/inc/opals/Exception.hpp:149
@ userInterrupt
thrown by user programmer (in C++ or Python) to stop processing
Definition: c++_api/inc/opals/Exception.hpp:158
@ odmReadAccess
thrown if the provided file cannot be opened as an ODM
Definition: c++_api/inc/opals/Exception.hpp:76
thrown if a parameter value is queried although the value has not been set (neither internally,...
Definition: c++_api/inc/opals/Exception.hpp:239
@ 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:147
thrown if an existing parameter file shall be appended to, but the correct position to proceed writin...
Definition: c++_api/inc/opals/Exception.hpp:342
Reflects Python's built-in class exceptions.NameError.
Definition: c++_api/inc/opals/Exception.hpp:381
@ 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:81
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:336
@ differentCRS
thrown if input data set have different coordinate reference systems
Definition: c++_api/inc/opals/Exception.hpp:77
@ paramQueriedBeforeSet
thrown if a parameter value is queried although the value has not been set (neither internally,...
Definition: c++_api/inc/opals/Exception.hpp:65
thrown if an alias is set for unknown column name (only predefined column name are allowed)
Definition: c++_api/inc/opals/Exception.hpp:276
@ ambiguousParameter
thrown if there are ambiguities amoung several possible parameter names
Definition: c++_api/inc/opals/Exception.hpp:63
@ fileCorrupt
general file corruption error: thrown if a file to be used is not interpretable
Definition: c++_api/inc/opals/Exception.hpp:80
An error occurred during a call to a Python interpreter. Reflects Python's built-in class exceptions....
Definition: c++_api/inc/opals/Exception.hpp:356
@ licence
general licence error
Definition: c++_api/inc/opals/Exception.hpp:84
@ test
test exceptions are thrown if the common parameter testErrorProbability is activated
Definition: c++_api/inc/opals/Exception.hpp:59
@ pythonValueError
Reflects Python's built-in class exceptions.ValueError.
Definition: c++_api/inc/opals/Exception.hpp:155
thrown if the provided file cannot be opened as an ODM
Definition: c++_api/inc/opals/Exception.hpp:263
thrown if there are ambiguities amoung several possible parameter names
Definition: c++_api/inc/opals/Exception.hpp:227
general licence error
Definition: c++_api/inc/opals/Exception.hpp:348
a general parameter error (usually comes from boost::program_options)
Definition: c++_api/inc/opals/Exception.hpp:213
@ xmlParsing
thrown if the provided xml file could not be parsed
Definition: c++_api/inc/opals/Exception.hpp:73
Reflects Python's built-in class exceptions.Exception.
Definition: c++_api/inc/opals/Exception.hpp:364
thrown a specified attribute doesn't exists in the corresponding odm.
Definition: c++_api/inc/opals/Exception.hpp:307
The base class of all exceptions thrown by opals.
Definition: c++_api/inc/opals/Exception.hpp:171
thrown if the provided file cannot be accessed for reading.
Definition: c++_api/inc/opals/Exception.hpp:251
thrown if the provided file cannot be accessed for writing.
Definition: c++_api/inc/opals/Exception.hpp:257
@ fileExistence
thrown if the provided filename doesn't exist.
Definition: c++_api/inc/opals/Exception.hpp:66
@ fileReadAccess
thrown if the provided file cannot be accessed for reading.
Definition: c++_api/inc/opals/Exception.hpp:67
thrown if a module requires a coordinate reference systems to be set
Definition: c++_api/inc/opals/Exception.hpp:321