File: dbErrorReporting.html

package info (click to toggle)
db5.3 5.3.28%2Bdfsg1-0.8
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 158,400 kB
  • sloc: ansic: 448,406; java: 111,824; tcl: 80,544; sh: 44,326; cs: 33,697; cpp: 21,604; perl: 14,557; xml: 10,799; makefile: 4,077; javascript: 1,998; yacc: 1,003; awk: 965; sql: 801; erlang: 342; python: 216; php: 24; asm: 14
file content (207 lines) | stat: -rw-r--r-- 7,072 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
<?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 Reporting Functions</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="Getting Started with Berkeley DB" />
    <link rel="up" href="databases.html" title="Chapter 2. Databases" />
    <link rel="prev" href="CoreDBAdmin.html" title="Administrative Methods" />
    <link rel="next" href="CoreEnvUsage.html" title="Managing Databases in Environments" />
  </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 Reporting Functions</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="CoreDBAdmin.html">Prev</a> </td>
          <th width="60%" align="center">Chapter 2. Databases</th>
          <td width="20%" align="right"> <a accesskey="n" href="CoreEnvUsage.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="dbErrorReporting"></a>Error Reporting Functions</h2>
          </div>
        </div>
      </div>
      <p>
        To simplify error reporting and handling, the
        <span><code class="classname">DB</code> structure</span>
        
        
        offers several useful methods. 
        
        
        

    </p>
      <div class="itemizedlist">
        <ul type="disc">
          <li>
            <p>
                <code class="methodname">set_errcall()</code>
                
            </p>
            <p>
                Defines the function that is called when an error message is
                issued by DB. The error prefix and message are passed to
                this callback. It is up to the application to display this
                information correctly.
            </p>
          </li>
          <li>
            <p>
                <code class="methodname">set_errfile()</code>
            </p>
            <p>
                Sets the C library <code class="literal">FILE *</code> to be used for
                displaying error messages issued by the DB library. 
            </p>
          </li>
          <li>
            <p>
                <code class="methodname">set_errpfx()</code>
                
            </p>
            <p>
                Sets the prefix used for any error messages issued by the
                DB library.
            </p>
          </li>
          <li>
            <p>
                <code class="methodname">err()</code>
            </p>
            <p>
                Issues an error message. The error message is sent to the 
                callback function as defined by <code class="methodname">set_errcall</code>. 
                If that method has not been used, then the error message is sent to the 
                file defined by 
                    <span><code class="methodname">set_errfile()</code>.</span>
                    
                If none of these methods have been used, then the error message is sent to
                standard error.
            </p>
            <p>
                The error message consists of the prefix string
                (as defined by <code class="methodname">set_errpfx()</code>), 
                an optional <code class="literal">printf</code>-style formatted message, 
                the error message, and a trailing newline.
            </p>
          </li>
          <li>
            <p>
                <code class="methodname">errx()</code>
            </p>
            <p>
                Behaves identically to <code class="methodname">err()</code> except
                that the DB message text associated with the supplied error
                value is not appended to the error string.
            </p>
          </li>
        </ul>
      </div>
      <p>
        In addition, you can use the <code class="methodname">db_strerror()</code>
        function to directly return the error string that corresponds to a
        particular error number.
     </p>
      <p>
        For example, to send all error messages for a given database handle 
		to a callback for handling, first create your callback. Do something like this:
     </p>
      <a id="c_db8"></a>
      <pre class="programlisting">/* 
 * Function called to handle any database error messages
 * issued by DB. 
 */
void
my_error_handler(const DB_ENV *dbenv, const char *error_prefix,
	const char *msg)
{
  /* 
   * Put your code to handle the error prefix and error
   * message here. Note that one or both of these parameters
   * may be NULL depending on how the error message is issued
   * and how the DB handle is configured.
   */
} </pre>
      <p>
		And then register the callback as follows:
	</p>
      <a id="c_db9"></a>
      <pre class="programlisting">#include &lt;db.h&gt;
#include &lt;stdio.h&gt;

...

DB *dbp;
int ret;

/*
 * Create a database and initialize it for error
 * reporting.
 */
ret = db_create(&amp;dbp, NULL, 0);
if (ret != 0) {
        fprintf(stderr, "%s: %s\n", "my_program",
          db_strerror(ret));
        return(ret);
}

/* Set up error handling for this database */
dbp-&gt;set_errcall(dbp, my_error_handler);
dbp-&gt;set_errpfx(dbp, "my_example_program"); </pre>
      <p>
        And to issue an error message:
    </p>
      <a id="c_db10"></a>
      <pre class="programlisting">ret = dbp-&gt;open(dbp, 
                NULL,
                "mydb.db", 
                NULL,
                DB_BTREE,
                DB_CREATE,
                0);
if (ret != 0) {
    dbp-&gt;err(dbp, ret,
      "Database open failed: %s", "mydb.db");
    return(ret);
}</pre>
      <span>
        
    </span>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="CoreDBAdmin.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="databases.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="CoreEnvUsage.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Administrative Methods </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> Managing Databases in Environments</td>
        </tr>
      </table>
    </div>
  </body>
</html>