Files
Yasuhiro KIMURA 9678929700 Update to 18.1.40
2020-07-24 01:10:28 +09:00

133 lines
5.5 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 18.1.40</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 class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Note</h3>
<p>
Equivalent methods exist for informational messages. See
<a href="../api_reference/C/dbmsg.html" class="olink">DB-&gt;msg()</a> and <a href="../api_reference/C/dbset_msgpfx.html" class="olink">DB-&gt;set_msgpfx()</a> for details.
</p>
</div>
</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>