Version 2.0.1
Error handling

WiredTiger operations return a value of 0 on success and a non-zero value on error.

Error codes may be either positive or negative: positive error codes are standard error codes as described for POSIX-like systems (for example, EINVAL or EBUSY), negative error codes are WiredTiger-specific (for example, WT_DEADLOCK).

WiredTiger-specific error codes always appear in the -31,800 to -31,999 range.

The following is a list of possible WiredTiger-specific errors:

WT_DEADLOCK
This error is generated when an operation cannot be completed due to a conflict with concurrent operations. The operation may be retried; if a transaction is in progress, it should be rolled back and the operation retried in a new transaction.
WT_DUPLICATE_KEY
This error is generated when the application attempts to insert a record with the same key as an existing record without the 'overwrite' configuration to WT_SESSION::open_cursor.
WT_ERROR
This error is returned when an error is not covered by a specific error return.
WT_NOTFOUND
This error indicates an operation did not find a value to return. This includes cursor search and other operations where no record matched the cursor's search key such as WT_CURSOR::update or WT_CURSOR::remove.
WT_PANIC
This error indicates an underlying problem that requires the application exit and restart.

The wiredtiger_strerror function returns the standard message associated with any WiredTiger, ISO C99, or POSIX 1003.1-2001 function:

const char *key = "non-existent key";
cursor->set_key(cursor, key);
if ((ret = cursor->remove(cursor)) != 0) {
fprintf(stderr,
"cursor.remove: %s\n", wiredtiger_strerror(ret));
return (ret);
}

More complex error handling can be configured by passing an implementation of WT_EVENT_HANDLER to wiredtiger_open or WT_CONNECTION::open_session.