error.h

00001 #ifndef DBALLE_CPP_ERROR_H
00002 #define DBALLE_CPP_ERROR_H
00003 
00004 #include <dballe/core/error.h>
00005 
00006 #include <string>
00007 #include <exception>
00008 
00009 namespace dballe {
00010 namespace exception {
00011 
00015 class Exception : public std::exception
00016 {
00018     dba_err_code code;
00020     std::string message;
00022     std::string context;
00024     std::string details;
00026     std::string fullInfo;
00027 
00028 public:
00029     Exception();
00030     virtual ~Exception() throw () {}
00031 
00033     virtual const char* what() const throw ()
00034     {
00035         return fullInfo.c_str();
00036     }
00037 };
00038 
00043 struct NotFound : public Exception {};
00044 struct Type : public Exception {};
00045 struct Alloc : public Exception {};
00046 struct ODBC : public Exception {};
00047 struct Handles : public Exception {};
00048 struct TooLong : public Exception {};
00049 struct System : public Exception {};
00050 struct Consistency : public Exception {};
00051 struct Parse : public Exception {};
00052 struct Write : public Exception {};
00053 struct Regex : public Exception {};
00054 struct Unimplemented : public Exception {};
00060 void throwAppropriateException();
00061 
00062 }
00063 
00067 static inline void checked(dba_err err)
00068 {
00069     if (err != DBA_OK)
00070         dballe::exception::throwAppropriateException();
00071 }
00072 
00073 }
00074 
00075 #endif

Generated on Fri Jun 22 14:21:37 2007 for dballe++ by  doxygen 1.5.2