#include <string>#include <buffy/stringf.h>Go to the source code of this file.
Classes | |
| class | InstallUnexpected |
| Install an unexpected handler for the duration of its scope. More... | |
| class | Exception |
| This is the base class for all exceptions used in the system. More... | |
| class | ContextException |
| Exception with a description of the throwing context. More... | |
| class | InterruptedException |
| It is a direct child of ContextException, and has the very same semantics. More... | |
| class | WaitInterruptedException |
| It is a direct child of InterruptedException, and has the very same semantics. More... | |
| class | ConsistencyCheckException |
| It is a direct child of ContextException, and has the very same semantics. More... | |
| class | OutOfRangeException |
| class | ValOutOfRangeException< C > |
| This exception is to be thrown when an index checking fails, providing informations on the acceptable index range and on the offending value. More... | |
| class | SystemException |
| This is the base class for exceptions that depend on system events, like exceptions on file or network I/O, on database access and so on. More... | |
| class | FileException |
| It is a direct child of SystemException, and has the very same semantics. More... | |
Functions | |
| void | DefaultUnexpected () |
| This is an unexpected handler provided by the library. | |
Every exception is the descendent of Exception that, in turn, extends the std::exception class of the STL.
Further descendents of Exception add functionality and automatisms to error message generation:
Example exception raising:
void MyFile::open(const char* fname) throw (FileException) { if ((fd = open(fname, O_RDONLY)) == -1) throw FileException(errno, stringf::fmt("opening %s read-only", fname)); }
Example exception catching:
try { myfile.open("/tmp/foo"); } catch (FileException& e) { fprintf(stderr, "%.*s: aborting.\n", PFSTR(e.toString())); exit(1); }
|
|
This is an unexpected handler provided by the library. It prints to stderr a stack trace and all possible available informations about the escaped exception. To have the function names in the stack trace, the executables need to be linked using the -rdynamic flag. |
1.4.4