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

STL

开发平台:

Visual C++

  1. /* vim: set tabstop=4 : */
  2. #ifndef __febird_io_IOException_h__
  3. #define __febird_io_IOException_h__
  4. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  5. # pragma once
  6. #endif
  7. #include <exception>
  8. #include <string>
  9. #include "../config.h"
  10. namespace febird {
  11. class FEBIRD_DLL_EXPORT IOException : public std::exception
  12. {
  13. protected:
  14. std::string m_message;
  15. int m_errCode;
  16. public:
  17. explicit IOException(const char* szMsg = "febird::IOException");
  18. explicit IOException(int errCode, const char* szMsg = "febird::IOException");
  19. virtual ~IOException() throw() {}
  20. const char* what() const throw() { return m_message.c_str(); }
  21. int errCode() const throw() { return m_errCode; }
  22. static int lastError();
  23. static std::string errorText(int errCode);
  24. };
  25. class FEBIRD_DLL_EXPORT OpenFileException : public IOException
  26. {
  27. std::string m_path;
  28. public:
  29. explicit OpenFileException(const char* path, const char* szMsg = "febird::OpenFileException");
  30. ~OpenFileException() throw() {}
  31. };
  32. // blocked streams read 0 bytes will cause this exception
  33. // other streams read not enough maybe cause this exception
  34. // all streams read 0 bytes will cause this exception
  35. class FEBIRD_DLL_EXPORT EndOfFileException : public IOException
  36. {
  37. public:
  38. explicit EndOfFileException(const char* szMsg = "febird::EndOfFileException")
  39. : IOException(szMsg)
  40. { }
  41. };
  42. class FEBIRD_DLL_EXPORT OutOfSpaceException : public IOException
  43. {
  44. public:
  45. explicit OutOfSpaceException(const char* szMsg = "febird::OutOfSpaceException")
  46. : IOException(szMsg)
  47. { }
  48. };
  49. class FEBIRD_DLL_EXPORT DelayedWriteFailException : public IOException
  50. {
  51. public:
  52. DelayedWriteFailException(const char* szMsg = "febird::DelayedWriteFailException")
  53. : IOException(szMsg)
  54. { }
  55. // size_t streamPosition;
  56. };
  57. } // namespace febird
  58. #endif // __febird_io_IOException_h__