28#include <drogon/exports.h>
83 virtual const std::exception &
base() const noexcept
85 static std::exception except;
94 const std::exception &
base()
const noexcept override
100 DROGON_EXPORT
explicit Failure(
const std::string &);
122class BrokenConnection :
public Failure
125 DROGON_EXPORT BrokenConnection();
126 DROGON_EXPORT
explicit BrokenConnection(
const std::string &);
133class SqlError :
public Failure
136 const std::string query_;
138 const std::string sqlState_;
140 const int errcode_{0};
141 const int extendedErrcode_{0};
144 DROGON_EXPORT
explicit SqlError(
const std::string &msg =
"",
145 const std::string &Q =
"",
146 const char sqlstate[] =
nullptr);
147 DROGON_EXPORT
explicit SqlError(
const std::string &msg,
148 const std::string &Q,
150 const int extendedErrcode);
151 DROGON_EXPORT
virtual ~SqlError()
noexcept;
154 DROGON_EXPORT
const std::string &
query() const noexcept;
155 DROGON_EXPORT const
std::
string &sqlState() const noexcept;
156 DROGON_EXPORT
int errcode() const noexcept;
157 DROGON_EXPORT
int extendedErrcode() const noexcept;
167class InDoubtError : public Failure
170 DROGON_EXPORT
explicit InDoubtError(
const std::string &);
174class TransactionRollback :
public Failure
177 DROGON_EXPORT
explicit TransactionRollback(
const std::string &);
189class SerializationFailure :
public TransactionRollback
192 DROGON_EXPORT
explicit SerializationFailure(
const std::string &);
196class StatementCompletionUnknown :
public TransactionRollback
199 DROGON_EXPORT
explicit StatementCompletionUnknown(
const std::string &);
203class DeadlockDetected :
public TransactionRollback
206 DROGON_EXPORT
explicit DeadlockDetected(
const std::string &);
212 const std::exception &base()
const noexcept override
218 DROGON_EXPORT
explicit InternalError(
const std::string &);
224 const std::exception &base()
const noexcept override
230 DROGON_EXPORT
explicit TimeoutError(
const std::string &);
236 const std::exception &base()
const noexcept override
242 DROGON_EXPORT
explicit UsageError(
const std::string &);
248 const std::exception &base()
const noexcept override
254 DROGON_EXPORT
explicit ArgumentError(
const std::string &);
260 const std::exception &base()
const noexcept override
266 DROGON_EXPORT
explicit ConversionError(
const std::string &);
272 const std::exception &base()
const noexcept override
278 DROGON_EXPORT
explicit RangeError(
const std::string &);
282class UnexpectedRows :
public RangeError
284 const std::exception &base()
const noexcept override
290 explicit UnexpectedRows(
const std::string &msg) : RangeError(msg)
296class FeatureNotSupported :
public SqlError
299 explicit FeatureNotSupported(
const std::string &err,
300 const std::string &Q =
"",
301 const char sqlstate[] =
nullptr)
302 : SqlError(err, Q, sqlstate)
306 explicit FeatureNotSupported(
const std::string &msg,
307 const std::string &Q,
309 const int extendedErrcode)
310 : SqlError(msg, Q, errcode, extendedErrcode)
316class DataException :
public SqlError
319 explicit DataException(
const std::string &err,
320 const std::string &Q =
"",
321 const char sqlstate[] =
nullptr)
322 : SqlError(err, Q, sqlstate)
326 explicit DataException(
const std::string &msg,
327 const std::string &Q,
329 const int extendedErrcode)
330 : SqlError(msg, Q, errcode, extendedErrcode)
335class IntegrityConstraintViolation :
public SqlError
338 explicit IntegrityConstraintViolation(
const std::string &err,
339 const std::string &Q =
"",
340 const char sqlstate[] =
nullptr)
341 : SqlError(err, Q, sqlstate)
345 explicit IntegrityConstraintViolation(
const std::string &msg,
346 const std::string &Q,
348 const int extendedErrcode)
349 : SqlError(msg, Q, errcode, extendedErrcode)
354class RestrictViolation :
public IntegrityConstraintViolation
357 explicit RestrictViolation(
const std::string &err,
358 const std::string &Q =
"",
359 const char sqlstate[] =
nullptr)
360 : IntegrityConstraintViolation(err, Q, sqlstate)
364 explicit RestrictViolation(
const std::string &msg,
365 const std::string &Q,
367 const int extendedErrcode)
368 : IntegrityConstraintViolation(msg, Q, errcode, extendedErrcode)
373class NotNullViolation :
public IntegrityConstraintViolation
376 explicit NotNullViolation(
const std::string &err,
377 const std::string &Q =
"",
378 const char sqlstate[] =
nullptr)
379 : IntegrityConstraintViolation(err, Q, sqlstate)
383 explicit NotNullViolation(
const std::string &msg,
384 const std::string &Q,
386 const int extendedErrcode)
387 : IntegrityConstraintViolation(msg, Q, errcode, extendedErrcode)
392class ForeignKeyViolation :
public IntegrityConstraintViolation
395 explicit ForeignKeyViolation(
const std::string &err,
396 const std::string &Q =
"",
397 const char sqlstate[] =
nullptr)
398 : IntegrityConstraintViolation(err, Q, sqlstate)
402 explicit ForeignKeyViolation(
const std::string &msg,
403 const std::string &Q,
405 const int extendedErrcode)
406 : IntegrityConstraintViolation(msg, Q, errcode, extendedErrcode)
411class UniqueViolation :
public IntegrityConstraintViolation
414 explicit UniqueViolation(
const std::string &err,
415 const std::string &Q =
"",
416 const char sqlstate[] =
nullptr)
417 : IntegrityConstraintViolation(err, Q, sqlstate)
421 explicit UniqueViolation(
const std::string &msg,
422 const std::string &Q,
424 const int extendedErrcode)
425 : IntegrityConstraintViolation(msg, Q, errcode, extendedErrcode)
430class CheckViolation :
public IntegrityConstraintViolation
433 explicit CheckViolation(
const std::string &err,
434 const std::string &Q =
"",
435 const char sqlstate[] =
nullptr)
436 : IntegrityConstraintViolation(err, Q, sqlstate)
440 explicit CheckViolation(
const std::string &msg,
441 const std::string &Q,
443 const int extendedErrcode)
444 : IntegrityConstraintViolation(msg, Q, errcode, extendedErrcode)
449class InvalidCursorState :
public SqlError
452 explicit InvalidCursorState(
const std::string &err,
453 const std::string &Q =
"",
454 const char sqlstate[] =
nullptr)
455 : SqlError(err, Q, sqlstate)
459 explicit InvalidCursorState(
const std::string &msg,
460 const std::string &Q,
462 const int extendedErrcode)
463 : SqlError(msg, Q, errcode, extendedErrcode)
468class InvalidSqlStatementName :
public SqlError
471 explicit InvalidSqlStatementName(
const std::string &err,
472 const std::string &Q =
"",
473 const char sqlstate[] =
nullptr)
474 : SqlError(err, Q, sqlstate)
478 explicit InvalidSqlStatementName(
const std::string &msg,
479 const std::string &Q,
481 const int extendedErrcode)
482 : SqlError(msg, Q, errcode, extendedErrcode)
487class InvalidCursorName :
public SqlError
490 explicit InvalidCursorName(
const std::string &err,
491 const std::string &Q =
"",
492 const char sqlstate[] =
nullptr)
493 : SqlError(err, Q, sqlstate)
497 explicit InvalidCursorName(
const std::string &msg,
498 const std::string &Q,
500 const int extendedErrcode)
501 : SqlError(msg, Q, errcode, extendedErrcode)
506class SyntaxError :
public SqlError
512 explicit SyntaxError(
const std::string &err,
513 const std::string &Q =
"",
514 const char sqlstate[] =
nullptr,
521 const std::string &Q,
523 const int extendedErrcode,
525 :
SqlError(msg, Q, errcode, extendedErrcode), errorPosition_(pos)
530class UndefinedColumn :
public SyntaxError
533 explicit UndefinedColumn(
const std::string &err,
534 const std::string &Q =
"",
535 const char sqlstate[] =
nullptr)
536 : SyntaxError(err, Q, sqlstate)
540 explicit UndefinedColumn(
const std::string &msg,
541 const std::string &Q,
543 const int extendedErrcode)
544 : SyntaxError(msg, Q, errcode, extendedErrcode)
549class UndefinedFunction :
public SyntaxError
552 explicit UndefinedFunction(
const std::string &err,
553 const std::string &Q =
"",
554 const char sqlstate[] =
nullptr)
555 : SyntaxError(err, Q, sqlstate)
559 explicit UndefinedFunction(
const std::string &msg,
560 const std::string &Q,
562 const int extendedErrcode)
563 : SyntaxError(msg, Q, errcode, extendedErrcode)
568class UndefinedTable :
public SyntaxError
571 explicit UndefinedTable(
const std::string &err,
572 const std::string &Q =
"",
573 const char sqlstate[] =
nullptr)
574 : SyntaxError(err, Q, sqlstate)
578 explicit UndefinedTable(
const std::string &msg,
579 const std::string &Q,
581 const int extendedErrcode)
582 : SyntaxError(msg, Q, errcode, extendedErrcode)
587class InsufficientPrivilege :
public SqlError
590 explicit InsufficientPrivilege(
const std::string &err,
591 const std::string &Q =
"",
592 const char sqlstate[] =
nullptr)
593 : SqlError(err, Q, sqlstate)
597 explicit InsufficientPrivilege(
const std::string &msg,
598 const std::string &Q,
600 const int extendedErrcode)
601 : SqlError(msg, Q, errcode, extendedErrcode)
607class InsufficientResources :
public SqlError
610 explicit InsufficientResources(
const std::string &err,
611 const std::string &Q =
"",
612 const char sqlstate[] =
nullptr)
613 : SqlError(err, Q, sqlstate)
617 explicit InsufficientResources(
const std::string &msg,
618 const std::string &Q,
620 const int extendedErrcode)
621 : SqlError(msg, Q, errcode, extendedErrcode)
626class DiskFull :
public InsufficientResources
629 explicit DiskFull(
const std::string &err,
630 const std::string &Q =
"",
631 const char sqlstate[] =
nullptr)
632 : InsufficientResources(err, Q, sqlstate)
636 explicit DiskFull(
const std::string &msg,
637 const std::string &Q,
639 const int extendedErrcode)
640 : InsufficientResources(msg, Q, errcode, extendedErrcode)
645class OutOfMemory :
public InsufficientResources
648 explicit OutOfMemory(
const std::string &err,
649 const std::string &Q =
"",
650 const char sqlstate[] =
nullptr)
651 : InsufficientResources(err, Q, sqlstate)
655 explicit OutOfMemory(
const std::string &msg,
656 const std::string &Q,
658 const int extendedErrcode)
659 : InsufficientResources(msg, Q, errcode, extendedErrcode)
664class TooManyConnections :
public BrokenConnection
667 explicit TooManyConnections(
const std::string &err) : BrokenConnection(err)
std::function< void(const DrogonDbException &)> DrogonDbExceptionCallback
Definition Exception.h:711
Mixin base class to identify drogon-db-specific exception types.
Definition Exception.h:51
virtual const std::exception & base() const noexcept
Return std::exception base-class object.
Definition Exception.h:83
virtual ~DrogonDbException() noexcept
Support run-time polymorphism, and keep this class abstract.
Definition Exception.h:54
Exception class for failed queries.
Definition Exception.h:134
DROGON_EXPORT const std::string & query() const noexcept
The query whose execution triggered the exception.
Definition Exception.h:507
const int errorPosition_
Approximate position in string where error occurred, or -1 if unknown.
Definition Exception.h:510
Drogon Test is a minimal effort test framework developed because the major C++ test frameworks doesn'...
Definition Attribute.h:23