00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef MYSQLPP_EXCEPTIONS_H
00032 #define MYSQLPP_EXCEPTIONS_H
00033
00034 #include "connection.h"
00035
00036 #include <exception>
00037 #include <string>
00038
00039 namespace mysqlpp {
00040
00042
00043 class MYSQLPP_EXPORT Exception : public std::exception
00044 {
00045 public:
00047 Exception(const Exception& e) throw() :
00048 std::exception(e),
00049 what_(e.what_)
00050 {
00051 }
00052
00054 Exception& operator=(const Exception& rhs) throw()
00055 {
00056 what_ = rhs.what_;
00057 return *this;
00058 }
00059
00061 ~Exception() throw() { }
00062
00064 virtual const char* what() const throw()
00065 {
00066 return what_.c_str();
00067 }
00068
00069 protected:
00071 Exception(const char* w = "") throw() :
00072 what_(w)
00073 {
00074 }
00075
00077 Exception(const std::string& w) throw() :
00078 what_(w)
00079 {
00080 }
00081
00083 std::string what_;
00084 };
00085
00086
00088
00089 class MYSQLPP_EXPORT BadConversion : public Exception
00090 {
00091 public:
00092 const char* type_name;
00093 std::string data;
00094 size_t retrieved;
00095 size_t actual_size;
00096
00104 BadConversion(const char* tn, const char* d,
00105 size_t r, size_t a) :
00106 Exception("Bad type conversion: \""),
00107 type_name(tn),
00108 data(d),
00109 retrieved(r),
00110 actual_size(a)
00111 {
00112 what_ += d ? d : "<NULL>";
00113 what_ += "\" incompatible with \"";
00114 what_ += tn;
00115 what_ += "\" type";
00116 }
00117
00125 BadConversion(const std::string& w, const char* tn,
00126 const char* d, size_t r, size_t a) :
00127 Exception(w),
00128 type_name(tn),
00129 data(d),
00130 retrieved(r),
00131 actual_size(a)
00132 {
00133 }
00134
00140 explicit BadConversion(const char* w = "") :
00141 Exception(w),
00142 type_name("unknown"),
00143 data(""),
00144 retrieved(0),
00145 actual_size(0)
00146 {
00147 }
00148
00150 ~BadConversion() throw() { }
00151 };
00152
00153
00158
00159 class MYSQLPP_EXPORT BadFieldName : public Exception
00160 {
00161 public:
00165 explicit BadFieldName(const char* bad_field) :
00166 Exception(std::string("Unknown field name: ") + bad_field)
00167 {
00168 }
00169
00171 ~BadFieldName() throw() { }
00172 };
00173
00174
00177
00178 class MYSQLPP_EXPORT BadNullConversion : public Exception
00179 {
00180 public:
00182 explicit BadNullConversion(const char* w = "") :
00183 Exception(w)
00184 {
00185 }
00186 };
00187
00188
00191
00192 class MYSQLPP_EXPORT BadOption : public Exception
00193 {
00194 public:
00196 explicit BadOption(const char* w,
00197 Connection::Option o) :
00198 Exception(w),
00199 option_(o)
00200 {
00201 }
00202
00204 explicit BadOption(const std::string& w,
00205 Connection::Option o) :
00206 Exception(w),
00207 option_(o)
00208 {
00209 }
00210
00212 Connection::Option what_option() const { return option_; }
00213
00214 private:
00215 Connection::Option option_;
00216 };
00217
00218
00223
00224 class MYSQLPP_EXPORT BadParamCount : public Exception
00225 {
00226 public:
00228 explicit BadParamCount(const char* w = "") :
00229 Exception(w)
00230 {
00231 }
00232
00234 ~BadParamCount() throw() { }
00235 };
00236
00237
00244
00245 class MYSQLPP_EXPORT BadQuery : public Exception
00246 {
00247 public:
00249 explicit BadQuery(const char* w = "") :
00250 Exception(w)
00251 {
00252 }
00253
00255 explicit BadQuery(const std::string& w) :
00256 Exception(w)
00257 {
00258 }
00259 };
00260
00261
00265
00266 class MYSQLPP_EXPORT ConnectionFailed : public Exception
00267 {
00268 public:
00270 explicit ConnectionFailed(const char* w = "") :
00271 Exception(w)
00272 {
00273 }
00274 };
00275
00276
00279
00280 class MYSQLPP_EXPORT DBSelectionFailed : public Exception
00281 {
00282 public:
00284 explicit DBSelectionFailed(const char* w = "") :
00285 Exception(w)
00286 {
00287 }
00288 };
00289
00290
00293
00294 class MYSQLPP_EXPORT EndOfResults : public Exception
00295 {
00296 public:
00298 explicit EndOfResults(const char* w = "end of results") :
00299 Exception(w)
00300 {
00301 }
00302 };
00303
00304
00307
00308 class MYSQLPP_EXPORT EndOfResultSets : public Exception
00309 {
00310 public:
00312 explicit EndOfResultSets(const char* w = "end of result sets") :
00313 Exception(w)
00314 {
00315 }
00316 };
00317
00318
00326
00327 class MYSQLPP_EXPORT LockFailed : public Exception
00328 {
00329 public:
00331 explicit LockFailed(const char* w = "lock failed") :
00332 Exception(w)
00333 {
00334 }
00335 };
00336
00337
00340
00341 class MYSQLPP_EXPORT ObjectNotInitialized : public Exception
00342 {
00343 public:
00345 explicit ObjectNotInitialized(const char* w = "") :
00346 Exception(w)
00347 {
00348 }
00349 };
00350
00351
00352 }
00353
00354 #endif