1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-10 23:02:54 +03:00
Files
mariadb/bdb/docs/ref/tcl/error.html
2001-03-04 19:42:05 -05:00

70 lines
3.9 KiB
HTML

<!--$Id: error.so,v 11.13 2001/01/09 18:48:06 bostic Exp $-->
<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
<!--All rights reserved.-->
<html>
<head>
<title>Berkeley DB Reference Guide: Tcl error handling</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
</head>
<body bgcolor=white>
<table><tr valign=top>
<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Tcl</dl></h3></td>
<td width="1%"><a href="../../ref/tcl/program.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/tcl/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p>
<h1 align=center>Tcl error handling</h1>
<p>The Tcl interfaces to Berkeley DB generally return TCL_OK on success and throw
a Tcl error on failure, using the appropriate Tcl interfaces to provide
the user with an informative error message. There are some "expected"
failures, however, for which no Tcl error will be thrown and for which
Tcl commands will return TCL_OK. These failures include when a
searched-for key is not found, a requested key/data pair was previously
deleted, or a key/data pair cannot be written because the key already
exists.
<p>These failures can be detected by searching the Berkeley DB error message that
is returned. For example, to detect that an attempt to put a record into
the database failed because the key already existed:
<p><blockquote><pre>% berkdb open -create -btree a.db
db0
% db0 put dog cat
0
% set ret [db0 put -nooverwrite dog newcat]
DB_KEYEXIST: Key/data pair already exists
% if { [string first DB_KEYEXIST $ret] != -1 } {
puts "This was an error; the key existed"
}
This was an error; the key existed
% db0 close
0
% exit</pre></blockquote>
<p>To simplify parsing, it is recommended that the initial Berkeley DB error name
be checked, e.g., DB_KEYEXIST in the above example. These values will
not change in future releases of Berkeley DB to ensure that Tcl scripts are not
broken by upgrading to new releases of Berkeley DB. There are currently only
three such "expected" error returns. They are:
<p><blockquote><pre>DB_NOTFOUND: No matching key/data pair found
DB_KEYEMPTY: Non-existent key/data pair
DB_KEYEXIST: Key/data pair already exists</pre></blockquote>
<p>Finally, in some cases, when a Berkeley DB error occurs Berkeley DB will output
additional error information. By default, all Berkeley DB error messages will
be prefixed with the created command in whose context the error occurred
(e.g., "env0", "db2", etc.). There are several ways to capture and
access this information.
<p>First, if Berkeley DB invokes the error callback function, the additional
information will be placed in the error result returned from the
command and in the errorInfo backtrace variable in Tcl.
<p>Also the two calls to open an environment and
open a database take an option, <b>-errfile filename</b>, which sets an
output file to which these additional error messages should be written.
<p>Additionally the two calls to open an environment and
open a database take an option, <b>-errpfx string</b>, which sets the
error prefix to the given string. This option may be useful
in circumstances where a more descriptive prefix is desired or
where a constant prefix indicating an error is desired.
<table><tr><td><br></td><td width="1%"><a href="../../ref/tcl/program.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/tcl/faq.html"><img src="../../images/next.gif" alt="Next"></a>
</td></tr></table>
<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
</body>
</html>