#include <db_cxx.h> class DbException { public: int get_errno() const; virtual const char *what() const; DbEnv *get_env() const; };
This information describes the DbException
class and how
it is used by the various Berkeley DB classes.
Most methods in the Berkeley DB classes return an int
, but also throw
an exception. This allows for two different error behaviors. By default, the Berkeley DB
C++ API is configured to throw an exception whenever a serious error occurs. This
generally allows for cleaner logic for transaction processing because a try block can
surround a single transaction. Alternatively, Berkeley DB can be configured to not throw
exceptions, and instead have the individual function return an error code, by setting
the DB_CXX_NO_EXCEPTIONS
for the Db and
DbEnv constructors.
A DbException
object contains an informational string, an
errno
, and a reference to the environment from which the exception
was thrown. The errno
can be obtained by using the
DbException::get_errno()
method, and can be used, in standard
cases, to determine the type of the exception. The informational string can be obtained
by using the DbException::what()
. And, the environment can be
obtained using the DbException::get_env()
method.
We expect in the future that this class will inherit from the standard class exception, but certain language implementation bugs currently prevent this on some platforms.
Some methods may return non-zero values without issuing an exception. This occurs in situations that are not normally considered an error, but when some informational status is returned. For example, the Db::get() method returns DB_NOTFOUND when a requested key does not appear in the database.