exceptions/README.md
2014-03-14 21:14:53 +01:00

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" );
```