EEL
EEL stands for 'Extensible Exception Library': it is a simple framework for C++11 exception handling.
The concepts behind are the following:
- contextual defaults for Exception payload. It possible to anticipate the values used for variable substitution through a scoped stack-based contextual information.
- compatibility with the existing std::exception(s);
- extendible generic payload for transporting any kind of informations through C++ exceptions (eel::Attributes)
- simple mechanism for extending the payload during the exception handler backtrace (eel::Exception::operator << ())
- coherent semantic in the so resulting exceptions for the final user (Message IDs templates and eel::Exception::what() overriden method)
- low-level diagnostic informations provided 'on demand' (eel::Exception::dump() method);
C++ standard exception hierarchy
The C++ standard exceptions are thought with efficiency in mind: this means
that - even if possible - they decided not to use virtual inheritance.
As a side effect, the multiple inheritance mechanism is unusable when the
backtrace tree contructor arrives to standard exceptions because of the
pertinent constructors would be ambiguous and - as such - marked as 'deleted'.
Concretely this means that is not possible to have a unique general exception
handler for eel classes not directly derived by the std::exception.
This is not to a bug but an architectural decision taken by the standard
exception library designers.
Features:
- compatibility with std::exception;
- extensible attribute setting mechanism;
- message IDs template based;
Distro supported:
- CentOS 7
- Debian 8
- Fedora 25
- OpenSUSE Leap 42.1
- Ubuntu 16