cxx_except.h
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 1997-2002
  5.  * Sleepycat Software.  All rights reserved.
  6.  *
  7.  * $Id: cxx_except.h,v 11.5 2002/08/01 23:32:34 mjc Exp $
  8.  */
  9. #ifndef _CXX_EXCEPT_H_
  10. #define _CXX_EXCEPT_H_
  11. #include "cxx_common.h"
  12. ////////////////////////////////////////////////////////////////
  13. ////////////////////////////////////////////////////////////////
  14. //
  15. // Forward declarations
  16. //
  17. class DbDeadlockException;                       // forward
  18. class DbException;                               // forward
  19. class DbLockNotGrantedException;                 // forward
  20. class DbLock;                                    // forward
  21. class DbMemoryException;                         // forward
  22. class DbRunRecoveryException;                    // forward
  23. class Dbt;                                       // forward
  24. ////////////////////////////////////////////////////////////////
  25. ////////////////////////////////////////////////////////////////
  26. //
  27. // Exception classes
  28. //
  29. // Almost any error in the DB library throws a DbException.
  30. // Every exception should be considered an abnormality
  31. // (e.g. bug, misuse of DB, file system error).
  32. //
  33. // NOTE: We would like to inherit from class exception and
  34. //       let it handle what(), but there are
  35. //       MSVC++ problems when <exception> is included.
  36. //
  37. class _exported DbException
  38. {
  39. public:
  40. virtual ~DbException();
  41. DbException(int err);
  42. DbException(const char *description);
  43. DbException(const char *prefix, int err);
  44. DbException(const char *prefix1, const char *prefix2, int err);
  45. int get_errno() const;
  46. virtual const char *what() const;
  47. DbException(const DbException &);
  48. DbException &operator = (const DbException &);
  49. private:
  50. char *what_;
  51. int err_;                   // errno
  52. };
  53. //
  54. // A specific sort of exception that occurs when
  55. // an operation is aborted to resolve a deadlock.
  56. //
  57. class _exported DbDeadlockException : public DbException
  58. {
  59. public:
  60. virtual ~DbDeadlockException();
  61. DbDeadlockException(const char *description);
  62. DbDeadlockException(const DbDeadlockException &);
  63. DbDeadlockException &operator = (const DbDeadlockException &);
  64. };
  65. //
  66. // A specific sort of exception that occurs when
  67. // a lock is not granted, e.g. by lock_get or lock_vec.
  68. // Note that the Dbt is only live as long as the Dbt used
  69. // in the offending call.
  70. //
  71. class _exported DbLockNotGrantedException : public DbException
  72. {
  73. public:
  74. virtual ~DbLockNotGrantedException();
  75. DbLockNotGrantedException(const char *prefix, db_lockop_t op,
  76.     db_lockmode_t mode, const Dbt *obj, const DbLock lock, int index);
  77. DbLockNotGrantedException(const DbLockNotGrantedException &);
  78. DbLockNotGrantedException &operator =
  79.     (const DbLockNotGrantedException &);
  80. db_lockop_t get_op() const;
  81. db_lockmode_t get_mode() const;
  82. const Dbt* get_obj() const;
  83. DbLock *get_lock() const;
  84. int get_index() const;
  85. private:
  86. db_lockop_t op_;
  87. db_lockmode_t mode_;
  88. const Dbt *obj_;
  89. DbLock *lock_;
  90. int index_;
  91. };
  92. //
  93. // A specific sort of exception that occurs when
  94. // user declared memory is insufficient in a Dbt.
  95. //
  96. class _exported DbMemoryException : public DbException
  97. {
  98. public:
  99. virtual ~DbMemoryException();
  100. DbMemoryException(Dbt *dbt);
  101. DbMemoryException(const char *description);
  102. DbMemoryException(const char *prefix, Dbt *dbt);
  103. DbMemoryException(const char *prefix1, const char *prefix2, Dbt *dbt);
  104. Dbt *get_dbt() const;
  105. DbMemoryException(const DbMemoryException &);
  106. DbMemoryException &operator = (const DbMemoryException &);
  107. private:
  108. Dbt *dbt_;
  109. };
  110. //
  111. // A specific sort of exception that occurs when
  112. // recovery is required before continuing DB activity.
  113. //
  114. class _exported DbRunRecoveryException : public DbException
  115. {
  116. public:
  117. virtual ~DbRunRecoveryException();
  118. DbRunRecoveryException(const char *description);
  119. DbRunRecoveryException(const DbRunRecoveryException &);
  120. DbRunRecoveryException &operator = (const DbRunRecoveryException &);
  121. };
  122. #endif /* !_CXX_EXCEPT_H_ */