DataIO_Exception.h
上传用户:kx_jwh
上传日期:2021-09-03
资源大小:76k
文件大小:2k
源码类别:

STL

开发平台:

Visual C++

  1. /* vim: set tabstop=4 : */
  2. #ifndef __febird_io_DataIO_Exception_h__
  3. #define __febird_io_DataIO_Exception_h__
  4. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  5. # pragma once
  6. #endif
  7. #include "../config.h"
  8. #include <stdexcept>
  9. #include <string>
  10. namespace febird {
  11. class FEBIRD_DLL_EXPORT DataFormatException : public std::exception
  12. {
  13. protected:
  14. std::string m_message;
  15. public:
  16. explicit DataFormatException(const char* szMsg = "febird::DataFormatException");
  17. explicit DataFormatException(const std::string& strMsg);
  18. virtual ~DataFormatException() throw();
  19. const char* what() const throw() { return m_message.c_str(); }
  20. };
  21. class FEBIRD_DLL_EXPORT InvalidObjectException : public DataFormatException
  22. {
  23. public:
  24. explicit InvalidObjectException(const char* szMsg = "febird::InvalidObjectException");
  25. explicit InvalidObjectException(const std::string& strMsg);
  26. };
  27. // a size value is too large, such as container's size
  28. //
  29. class FEBIRD_DLL_EXPORT SizeValueTooLargeException : public DataFormatException
  30. {
  31. public:
  32. static void checkSizeValue(size_t value, size_t maxValue);
  33. SizeValueTooLargeException(size_t value, size_t maxValue, const char* szMsg = "febird::SizeValueTooLargeException");
  34. explicit SizeValueTooLargeException(const std::string& strMsg);
  35. };
  36. class FEBIRD_DLL_EXPORT BadVersionException : public DataFormatException
  37. {
  38. unsigned m_loaded_version;
  39. unsigned m_curr_version;
  40. public:
  41. explicit BadVersionException(unsigned loaded_version, unsigned curr_version, const char* className);
  42. };
  43. class FEBIRD_DLL_EXPORT NotFoundFactoryException : public DataFormatException
  44. {
  45. public:
  46. explicit NotFoundFactoryException(const char* szMsg = "febird::NotFoundFactoryException");
  47. explicit NotFoundFactoryException(const std::string& strMsg);
  48. };
  49. } // namespace febird
  50. #endif // __febird_io_DataIO_Exception_h__