2013-07-17 19:24:07 +02:00
|
|
|
|
2013-08-30 11:07:39 +02:00
|
|
|
.. highlight:: c
|
|
|
|
|
|
|
|
.. _util_exceptions:
|
2013-07-17 19:24:07 +02:00
|
|
|
|
|
|
|
Exceptions
|
2013-08-31 00:04:09 +02:00
|
|
|
=============
|
2013-08-30 11:07:39 +02:00
|
|
|
|
2013-07-17 19:24:07 +02:00
|
|
|
|
|
|
|
TRIQS defines special exceptions, with the following characteristics :
|
|
|
|
|
2013-08-31 00:04:09 +02:00
|
|
|
* they derives from std::exceptions
|
2014-07-23 20:55:41 +02:00
|
|
|
* their method .what() returns :
|
2013-07-17 19:24:07 +02:00
|
|
|
|
2014-07-23 20:55:41 +02:00
|
|
|
* the date and time of the exception (useful in long QMC computations...).
|
2013-07-17 19:24:07 +02:00
|
|
|
* the file and line where the exception occurred
|
2014-07-23 20:55:41 +02:00
|
|
|
* an additionnal error message (see example below). The error behaves like a std::stringstream, one can accumulate any message
|
|
|
|
|
|
|
|
* their method .what() returns :
|
2013-07-17 19:24:07 +02:00
|
|
|
* a complete stack strace of the C++ code at the exception point, with demangling of the function name (on gcc and clang).
|
|
|
|
|
2014-07-23 20:55:41 +02:00
|
|
|
In addition, we provide a TRIQS_RUNTIME_ERROR macro to throw exception easily, Cf example below.
|
|
|
|
|
2013-07-17 19:24:07 +02:00
|
|
|
.. warning::
|
|
|
|
|
|
|
|
For uniformity, it is highly recommended to use these macros when developing for TRIQS.
|
|
|
|
|
2014-10-17 18:15:19 +02:00
|
|
|
Example:
|
2013-07-17 19:24:07 +02:00
|
|
|
|
2014-05-31 19:12:21 +02:00
|
|
|
.. triqs_example:: ./exceptions_0.cpp
|
2013-08-31 00:04:09 +02:00
|
|
|
The exception can of course be caught :
|
2013-07-17 19:24:07 +02:00
|
|
|
|
2014-05-31 19:12:21 +02:00
|
|
|
.. triqs_example:: ./exceptions_1.cpp
|