obelisk/src/lib/models/error.h

103 lines
2.5 KiB
C
Raw Normal View History

#ifndef OBELISK_MODELS_ERROR_H
#define OBELISK_MODELS_ERROR_H
#include <exception>
#include <string>
namespace obelisk
{
class DatabaseException : public std::exception
{
2022-12-10 21:11:39 -03:00
protected:
std::string errorMessage_;
public:
DatabaseException() :
errorMessage_("an unknown error ocurred")
{
}
DatabaseException(const int errorCode) :
2022-12-13 17:35:14 -03:00
errorMessage_("database error " + std::to_string(errorCode) + " ocurred")
{
}
DatabaseException(const std::string& errorMessage) :
errorMessage_(errorMessage)
{
}
2022-12-10 21:11:39 -03:00
virtual const char* what() const noexcept
{
return errorMessage_.c_str();
}
2022-12-10 21:11:39 -03:00
virtual void setErrorMessage(const std::string errorMessage)
{
2022-12-10 21:11:39 -03:00
errorMessage_ = errorMessage;
}
};
class DatabaseSizeException : public obelisk::DatabaseException
{
public:
DatabaseSizeException()
{
setErrorMessage("size of string or blob exceeds limits");
}
};
class DatabaseRangeException : public obelisk::DatabaseException
{
public:
DatabaseRangeException()
{
2022-12-10 21:11:39 -03:00
setErrorMessage("parameter index is out of range");
}
};
class DatabaseMemoryException : public obelisk::DatabaseException
{
public:
DatabaseMemoryException()
{
setErrorMessage("not enough memory for operation");
}
};
class DatabaseBusyException : public obelisk::DatabaseException
{
public:
DatabaseBusyException()
{
2022-12-13 17:35:14 -03:00
setErrorMessage("database was busy and operation was not performed");
2022-12-10 21:11:39 -03:00
}
};
class DatabaseMisuseException : public obelisk::DatabaseException
{
public:
DatabaseMisuseException()
{
2022-12-10 21:11:39 -03:00
setErrorMessage("misuse of the database routine");
}
};
class DatabaseConstraintException : public obelisk::DatabaseException
{
public:
DatabaseConstraintException()
{
2022-12-10 21:11:39 -03:00
setErrorMessage("a constraint exception occurred");
}
DatabaseConstraintException(const std::string& errorMessage)
{
2022-12-10 21:11:39 -03:00
setErrorMessage(errorMessage);
}
};
} // namespace obelisk
#endif