Gyoto
|
Error handling. More...
Go to the source code of this file.
Classes | |
class | Gyoto::Error |
Class for thowing exceptions. More... | |
Namespaces | |
Gyoto | |
Namespace for the Gyoto library. | |
Macros | |
#define | GYOTO_ERROR(msg) Gyoto::throwError(std::string(__FILE__ ":" GYOTO_STRINGIFY(__LINE__) " in ")+ __PRETTY_FUNCTION__ + ": " + msg) |
Throw a Gyoto::Error nicely. More... | |
Functions | |
void | Gyoto::throwError (std::string) |
Throw a Gyoto::Error. More... | |
Error handling.
Gyoto dlopens its plug-ins. The throw/catch C++ mechanism cannot pass the dlopen boundary. The Gyoto::Error mechanism alleviates this C++ language limitation.
Every Gyoto method (either in the main Gyoto library or in a Gyoto plug-in) should check for possible error conditions and throw adequate Gyoto::Error exceptions through the Gyoto::Error::throw() function. For instance:
If the main code has set Gyoto::Error::handler_t error handler using Gyoto::Error::setHandler(), these errors will then be passed to it. Else, the Error is C++-thrown at the main Gyoto library level, above the dlopen boundary.
The main code can then catch these exceptions and act appropriately, for instance:
#define GYOTO_ERROR | ( | msg | ) | Gyoto::throwError(std::string(__FILE__ ":" GYOTO_STRINGIFY(__LINE__) " in ")+ __PRETTY_FUNCTION__ + ": " + msg) |
Throw a Gyoto::Error nicely.
Throw an Error, prepending current function name. Calls Gyoto::throwError(std::string).