mirror of
https://github.com/MariaDB/server.git
synced 2025-11-09 11:41:36 +03:00
70 lines
3.9 KiB
HTML
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>
|