coreExceptions.html   [plain text]


<?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>Exception Handling</title>
    <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
    <link rel="home" href="index.html" title="Getting Started with Berkeley DB" />
    <link rel="up" href="introduction.html" title="Chapter 1. Introduction to Berkeley DB " />
    <link rel="previous" href="environments.html" title="Environments" />
    <link rel="next" href="returns.html" title="Error Returns" />
  </head>
  <body>
    <div class="navheader">
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Exception Handling</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
          <th width="60%" align="center">Chapter 1. Introduction to Berkeley DB </th>
          <td width="20%" align="right"> <a accesskey="n" href="returns.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="coreExceptions"></a>Exception Handling</h2>
          </div>
        </div>
        <div></div>
      </div>
      <p>
        Before continuing, it is useful to spend a few moments on exception
        handling in DB with the 
        <span>C++ API</span>.
    </p>
      <p>
        <span>By default, most</span>
        
        DB methods throw 
            <tt class="classname">DbException</tt>
            
        in the event of a serious error. 
        
        <span>
        However, be aware that
        <tt class="classname">DbException</tt> does not inherit from
        <tt class="classname">std::exception</tt> so your <tt class="literal">try</tt>
        blocks should catch both types of exceptions. For example:
        </span>
        
    </p>
      <a id="cxx_intro1"></a>
      <pre class="programlisting">#include &lt;db_cxx.h&gt;
    ...
try 
{
    // DB and other code goes here
}
catch(DbException &amp;e)
{
  // DB error handling goes here
}
catch(std::exception &amp;e)
{
    // All other error handling goes here
} </pre>
      <p>
        You can obtain the DB error number for a
        <tt class="classname">DbException</tt> 
         
        by using
        <span>
            <tt class="methodname">DbException::get_errno()</tt>. 
            You can also obtain the informational message associated with that error
            number using <tt class="methodname">DbException::what()</tt>.
        </span>
        
    </p>
      <p>
        If for some reason you do not want to manage
        <tt class="classname">DbException</tt> objects in your
        <tt class="literal">try</tt> blocks, you can configure DB to suppress them
        by setting <tt class="literal">DB_CXX_NO_EXCEPTIONS</tt> for your database and
        environment handles. In this event, you must manage your DB error
        conditions using the integer value returned by all DB methods. Be
        aware that this manual assumes that you want to manage your error
        conditions using <tt class="classname">DbException</tt> objects. 
    </p>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="environments.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="introduction.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="returns.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Environments </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> Error Returns</td>
        </tr>
      </table>
    </div>
  </body>
</html>