|
The Berkeley DB interfaces always return a value of 0 on success. If the operation does not succeed for any reason, the return value will be non-zero.
If a system error occurred (e.g., Berkeley DB ran out of disk space, or permission to access a file was denied, or an illegal argument was specified to one of the interfaces), Berkeley DB returns an errno value. All of the possible values of errno are greater than 0.
If the operation didn't fail due to a system error, but wasn't successful either, Berkeley DB returns a special error value. For example, if you tried to retrieve the data item associated with the key fruit, and there was no such key/data pair in the database, Berkeley DB would return DB_NOTFOUND, a special error value that means the requested key does not appear in the database. All of the possible special error values are less than 0.
Berkeley DB also offers programmatic support for displaying error return values. First, the db_strerror interface returns a pointer to the error message corresponding to any Berkeley DB error return, similar to the ANSI C strerror interface, but is able to handle both system error returns and Berkeley DB-specific return values.
Second, there are two error functions, DB->err and DB->errx. These functions work like the ANSI C printf interface, taking a printf-style format string and argument list, and optionally appending the standard error string to a message constructed from the format string and other arguments.