libdb/docs/programmer_reference/am_misc_error.html
2012-11-14 16:35:20 -05:00

105 lines
4.8 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Error support</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
<link rel="start" href="index.html" title="Berkeley DB Programmer's Reference Guide" />
<link rel="up" href="am_misc.html" title="Chapter 4.  Access Method Wrapup" />
<link rel="prev" href="am_misc_perm.html" title="Retrieved key/data permanence for C/C++" />
<link rel="next" href="am_misc_stability.html" title="Cursor stability" />
</head>
<body>
<div xmlns="" class="navheader">
<div class="libver">
<p>Library Version 11.2.5.3</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Error support</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="am_misc_perm.html">Prev</a> </td>
<th width="60%" align="center">Chapter 4. 
Access Method Wrapup
</th>
<td width="20%" align="right"> <a accesskey="n" href="am_misc_stability.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="am_misc_error"></a>Error support</h2>
</div>
</div>
</div>
<p>Berkeley DB offers programmatic support for displaying error return values.</p>
<p>The <a href="../api_reference/C/envstrerror.html" class="olink">db_strerror()</a> function returns a pointer to the error
message corresponding to any Berkeley DB error return, similar to the ANSI C
strerror function, but is able to handle both system error returns and
Berkeley DB specific return values.</p>
<p>For example:</p>
<a id="prog_am25"></a>
<pre class="programlisting">int ret;
...
if ((ret = dbp-&gt;put(dbp, NULL, &amp;key, &amp;data, 0)) != 0) {
fprintf(stderr, "put failed: %s\n", db_strerror(ret));
return (1);
}</pre>
<p>There are also two additional error methods, <a href="../api_reference/C/dberr.html" class="olink">DB-&gt;err()</a> and
<code class="methodname">DB-&gt;errx()</code>. These methods work like the ANSI C X3.159-1989 (ANSI C) printf
function, taking a printf-style format string and argument list, and
writing a message constructed from the format string and arguments.</p>
<p>The <a href="../api_reference/C/dberr.html" class="olink">DB-&gt;err()</a> method appends the standard error string to the
constructed message; the <code class="methodname">DB-&gt;errx()</code> method does not. These methods
provide simpler ways of displaying Berkeley DB error messages. For example,
if your application tracks session IDs in a variable called session_id,
it can include that information in its error messages:</p>
<p>Error messages can additionally be configured to always include a prefix
(for example, the program name) using the <a href="../api_reference/C/dbset_errpfx.html" class="olink">DB-&gt;set_errpfx()</a> method.</p>
<a id="prog_am26"></a>
<pre class="programlisting">#define DATABASE "access.db"
int ret;
(void)dbp-&gt;set_errpfx(dbp, program_name);
if ((ret = dbp-&gt;open(dbp,
NULL, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
dbp-&gt;err(dbp, ret, "%s", DATABASE);
dbp-&gt;errx(dbp,
"contact your system administrator: session ID was %d",
session_id);
return (1);
}</pre>
<p>For example, if the program were called my_app and the open call returned
an EACCESS system error, the error messages shown would appear as follows:</p>
<pre class="programlisting">my_app: access.db: Permission denied.
my_app: contact your system administrator: session ID was 14</pre>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="am_misc_perm.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="am_misc.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="am_misc_stability.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Retrieved key/data permanence for C/C++ </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Cursor stability</td>
</tr>
</table>
</div>
</body>
</html>