Template based exceptions - these are simple and practical and avoid the proliferation of exception types. Although not syntatactically ideal, it is convenient and eminently practical.
The embedded control libraries provide and internally make use of a variety of error mechanisms tailored to suit different situations. For lean and mean, there are c style error functions and macros in ecl_errors. At a higher level, there are template based exceptions, these are defined in this library. These are further enabled via the use of macros which allow code location (file and line #) reporting as well as debug mode only handling.
Include the following at the top of any translation unit: @code #include <ecl/exceptions.hpp> // The exception classes using ecl::StandardException; using ecl::DataException; // Posix Tools using ecl::PosixErrorHandler; // Error flags (from ecl_errors) using ecl::ConfigurationError; using ecl::InvalidInputError; //... @endcode You will also need to link to <i>-lecl_exceptions</i>.
- @ref errorsExceptions "Exceptions" - notes on ecl exception handling.
- src/examples/exceptions.cpp : coverage style test for exceptions. - src/examples/exception_tracer.cpp : getting a bactrace via exceptions, posix style.
- ecl_core_apps/src/benchmarks/exceptions.cpp : benchmarks the latencies for exception handling.
- <b>Feb 11</b> : Moved exception classes here from ecl_errors.