35 lines
1.1 KiB
Markdown
35 lines
1.1 KiB
Markdown
|
|
A C++ exception class and macros with easy nested declaration and localisation
|
|
data.
|
|
|
|
The point of this system is to permits to easily add to exceptions instances
|
|
some informations about _where_ the exceptions are thrown.
|
|
|
|
To do so, it uses compilers macros that indicates the current function, file and
|
|
line (`__FUNCTION__`, `__FILE__` and `__LINE__` for g++) and merge those
|
|
information with the given description returned by the `what` standard method.
|
|
|
|
Example:
|
|
```cpp
|
|
throw Existential_Observation( "Shit happens", E_INFOS );
|
|
```
|
|
|
|
Additionaly, it permits a one-line declaration of new exceptions, derived from
|
|
existing ones.
|
|
|
|
Example:
|
|
```cpp
|
|
EXCEPTION( Exception, Existential_Observation );
|
|
EXCEPTION( Existential_Observation, Pastafarism_Observation );
|
|
```
|
|
|
|
Note that the base `Exception` class derivate from `std::exception`.
|
|
|
|
It also provides a macro to easily throw an exception that permits to use
|
|
dynamic streamed messages inline and without having to specify `E_INFOS`.
|
|
|
|
Example:
|
|
```cpp
|
|
RAISE( Pastafarism_Observation, "Shit happens with " << 42 << " noodly appendages" );
|
|
```
|
|
|