<html>
<head><title>
HDF5/H5E API Specification
</title>
<link href="../ed_styles/RMelect.css" rel="stylesheet" type="text/css">
</head>

<body bgcolor="#FFFFFF">

<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
<!--
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  * Copyright by The HDF Group.                                               *
  * Copyright by the Board of Trustees of the University of Illinois.         *
  * All rights reserved.                                                      *
  *                                                                           *
  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
  * terms governing use, modification, and redistribution, is contained in    *
  * the files COPYING and Copyright.html.  COPYING can be found at the root   *
  * of the source code distribution tree; Copyright.html can be found at the  *
  * root level of an installed copy of the electronic HDF5 document set and   *
  * is linked from the top-level documents page.  It can also be found at     *
  * http://www.hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have      *
  * access to either file, you may request a copy from help@hdfgroup.org.     *
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 -->
<!-- #EndLibraryItem --><!-- HEADER RIGHT " " -->

<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" -->
<hr>
<center>
<table border=0 width=98%>
<tr><td valign=top align=left>
<a href="../index.html">HDF5 documents and links</a>&nbsp;<br>
<a href="../H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
<a href="../UG/HDF5_Users_Guide-Responsive HTML5/index.html">HDF5 User&rsquo;s Guide</a>&nbsp;<br>
<!--
<a href="Glossary.html">Glossary</a><br>
-->
</td>
<td valign=top align=right>
In the 
<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;
<font size="-1"><br>
<a href="../HL/RM_H5DS.html">H5DS</a>&nbsp;&nbsp;
<a href="../HL/RM_H5IM.html">H5IM</a>&nbsp;&nbsp;
<a href="../HL/RM_H5LT.html">H5LT</a>&nbsp;&nbsp;
<a href="../HL/RM_H5PT.html">H5PT</a>&nbsp;&nbsp;
<a href="../HL/RM_H5TB.html">H5TB</a>&nbsp;
<a href="../HL/RM_HDF5Optimized.html">Optimized</a>&nbsp;
<br>
<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
<a href="RM_H5L.html">H5L</a>&nbsp;
<br>
<a href="RM_H5O.html">H5O</a>&nbsp;&nbsp;
<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
<a href="RM_H5PL.html">H5PL</a>&nbsp;&nbsp;
<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
<a href="RM_H5Z.html">H5Z</a>&nbsp;
<br>
<a href="Tools.html">Tools</a>&nbsp;&nbsp;
<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
<a href="../fortran/index.html">Fortran</a>&nbsp;&nbsp;
<a href="APICompatMacros.html">Compatibility Macros</a>&nbsp;
<br>
<a href="CollectiveCalls.html">Collective Calls in Parallel</a>&nbsp;
</font>
<!--
<br>
<i><font size=-1>(Printable <a href="http://hdfgroup.org/HDF5/doc/PSandPDF/HDF5_RefManual.PDF">PDF</a> of this Reference Manual)</font></i>&nbsp;
-->

</td></tr>
</table>
</center>
<hr>
<!-- #EndLibraryItem --><center>
<h1>H5E: Error Interface</h1>
</center>

<h2>Error API Functions</h2>

These functions provide error handling capabilities in the HDF5 environment.
<br>
In the following lists, italic type indicates a configurable macro.

<p>
<strong>The C Interfaces:</strong>

<table border=0>
<tr><td valign=top>
<ul>
    <li><a href="#Error-Clear"><i>H5Eclear</i></a>
    <li><a href="#Error-Clear1">H5Eclear1</a>&nbsp;*
    <li><a href="#Error-Clear2">H5Eclear2</a>
    <li><a href="#Error-CreateStack">H5Ecreate_stack</a>	
    <li><a href="#Error-CloseStack">H5Eclose_stack</a>	
    <li><a href="#Error-Print"><i>H5Eprint</i></a>
    <li><a href="#Error-Print1">H5Eprint1</a>&nbsp;*
    <li><a href="#Error-Print2">H5Eprint2</a>
    <li><a href="#Error-Push"><i>H5Epush</i></a>
    <li><a href="#Error-Push1">H5Epush1</a>&nbsp;*
    <li><a href="#Error-Push2">H5Epush2</a>
</ul>
</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
<ul>
    <li><a href="#Error-Pop">H5Epop</a>
    <li><a href="#Error-GetNum">H5Eget_num</a>
    <li><a href="#Error-GetMajor">H5Eget_major</a>&nbsp;*
    <li><a href="#Error-GetMinor">H5Eget_minor</a>&nbsp;*
    <li><a href="#Error-GetMsg">H5Eget_msg</a>
    <li><a href="#Error-CreateMsg">H5Ecreate_msg</a>
    <li><a href="#Error-CloseMsg">H5Eclose_msg</a>
    <li><a href="#Error-RegisterClass">H5Eregister_class</a>
    <li><a href="#Error-UnregisterClass">H5Eunregister_class</a>
    <li><a href="#Error-GetClassName">H5Eget_class_name</a>
    <li><a href="#Error-AutoIsV2">H5Eauto_is_v2</a>
</ul>
</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
<ul>
    <li><a href="#Error-SetAuto"><i>H5Eset_auto</i></a>
    <li><a href="#Error-SetAuto1">H5Eset_auto1</a>&nbsp;*
    <li><a href="#Error-SetAuto2">H5Eset_auto2</a>
    <li><a href="#Error-GetAuto"><i>H5Eget_auto</i></a>
    <li><a href="#Error-GetAuto1">H5Eget_auto1</a>&nbsp;*
    <li><a href="#Error-GetAuto2">H5Eget_auto2</a>
    <li><a href="#Error-Walk"><i>H5Ewalk</i></a>
    <li><a href="#Error-Walk1">H5Ewalk1</a>&nbsp;*
    <li><a href="#Error-Walk2">H5Ewalk2</a>
<!--<li><a href="#Error-WalkCB">H5Ewalk_cb</a>                    -->
    <li><a href="#Error-GetCurrentStack">H5Eget_current_stack</a>
    <li><a href="#Error-SetCurrentStack">H5Eset_current_stack</a>
</ul>
</td></tr>
<tr><td align=right colspan=5>
    *&nbsp;<i>Use of these functions is deprecated in Release 1.8.0.</i>
</td></tr>
</table>
<br>

<i>Alphabetical Listing</i>

<table border="0">
  <tr>
    <td valign="top">
	<ul>
      <li><a href="#Error-AutoIsV2">H5Eauto_is_v2</a>
      <li><a href="#Error-Clear"><i>H5Eclear</i></a>
      <li><a href="#Error-Clear1">H5Eclear1</a>&nbsp;*
      <li><a href="#Error-Clear2">H5Eclear2</a>
      <li><a href="#Error-CloseMsg">H5Eclose_msg</a>
      <li><a href="#Error-CloseStack">H5Eclose_stack</a>
      <li><a href="#Error-CreateMsg">H5Ecreate_msg</a>
      <li><a href="#Error-CreateStack">H5Ecreate_stack</a>	
      <li><a href="#Error-GetAuto"><i>H5Eget_auto</i></a>
      <li><a href="#Error-GetAuto1">H5Eget_auto1</a>&nbsp;*
      <li><a href="#Error-GetAuto2">H5Eget_auto2</a>
	</ul>     
    </td>
    
    <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
    
    <td valign="top">
	<ul>
      <li><a href="#Error-GetClassName">H5Eget_class_name</a>	  
      <li><a href="#Error-GetCurrentStack">H5Eget_current_stack</a>
      <li><a href="#Error-GetMajor">H5Eget_major</a>&nbsp;*
      <li><a href="#Error-GetMinor">H5Eget_minor</a>&nbsp;*
      <li><a href="#Error-GetMsg">H5Eget_msg</a>
      <li><a href="#Error-GetNum">H5Eget_num</a>
      <li><a href="#Error-Pop">H5Epop</a>
      <li><a href="#Error-Print"><i>H5Eprint</i></a>
      <li><a href="#Error-Print1">H5Eprint1</a>&nbsp;*
      <li><a href="#Error-Print2">H5Eprint2</a>
      <li><a href="#Error-Push"><i>H5Epush</i></a>
	</ul>
    </td>
    
    <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
    
    <td valign="top">
	<ul>
      <li><a href="#Error-Push1">H5Epush1</a>&nbsp;*
      <li><a href="#Error-Push2">H5Epush2</a>
      <li><a href="#Error-RegisterClass">H5Eregister_class</a>
      <li><a href="#Error-SetAuto"><i>H5Eset_auto</i></a>
      <li><a href="#Error-SetAuto1">H5Eset_auto1</a>&nbsp;*
      <li><a href="#Error-SetAuto2">H5Eset_auto2</a>
      <li><a href="#Error-SetCurrentStack">H5Eset_current_stack</a>
      <li><a href="#Error-UnregisterClass">H5Eunregister_class</a>
      <li><a href="#Error-Walk"><i>H5Ewalk</i></a>
      <li><a href="#Error-Walk1">H5Ewalk1</a>&nbsp;*
      <li><a href="#Error-Walk2">H5Ewalk2</a>
<!--  <li><a href="#Error-WalkCB">H5Ewalk_cb</a>                    -->
	</ul>
    </td>
  </tr>
  <tr><td align=right colspan=5>
      *&nbsp;<i>Use of these functions is deprecated in Release 1.8.0.</i>
  </td></tr>
</table>

<br>
<strong>The Fortran Interface:</strong>
<br>
In general, each Fortran subroutine performs exactly the same task 
as the corresponding C function.  
<br>

<table border=0>
<tr><td valign=top>
<ul>
    <li><a href="#Error-Clear">h5eclear_f</a>
    <li><a href="#Error-Print">h5eprint_f</a>
</ul>
</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
<ul>
    <li><a href="#Error-SetAuto">h5eset_auto_f</a>
<!--<li><a href="#Error-GetAuto">h5eget_auto_f</a>                    -->
<!--<li><a href="#Error-Walk">h5ewalk_f</a>                          -->
<!--<li><a href="#Error-WalkCB">h5ewalk_cb_f</a>                     -->
</ul>
</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
<ul>
    <li><a href="#Error-GetMajor">h5eget_major_f</a>
    <li><a href="#Error-GetMinor">h5eget_minor_f</a>
</ul>
</td></tr>
</table>

<p>
The Error interface provides error handling in the form of a stack.  
The <code>FUNC_ENTER()</code> macro clears the error stack whenever 
an interface function is entered.  
When an error is detected, an entry is pushed onto the stack.  
As the functions unwind, additional entries are pushed onto the stack. 
The API function will return some indication that an error occurred and 
the application can print the error stack.
<p>
<!-- NEW PAGE -->
Certain API functions in the H5E package, such as <code>H5Eprint1</code>,
do not clear the error stack.  Otherwise, any function which
does not have an underscore immediately after the package name
will clear the error stack.  For instance, <code>H5Fopen</code> 
clears the error stack while <code>H5F_open</code> does not.
<p>
An error stack has a fixed maximum size.  
If this size is exceeded then the stack will be truncated and only the
inner-most functions will have entries on the stack. 
This is expected to be a rare condition. 
<p>
Each thread has its own error stack, but since
multi-threading has not been added to the library yet, this
package maintains a single error stack. The error stack is
statically allocated to reduce the complexity of handling
errors within the H5E package.    


<!--  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  -->
<!--       Include special topic files                       -->
<!--  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  -->


<!--  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  -->
<!--       Include function files                            -->
<!--  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  -->

<?php include("H5E/H5Eauto_is_v2.htm"); ?>
<?php include("H5E/H5Eclear.htm"); ?>
<?php include("H5E/H5Eclear1.htm"); ?>
<?php include("H5E/H5Eclear2.htm"); ?>
<?php include("H5E/H5Eclose_msg.htm"); ?>
<?php include("H5E/H5Eclose_stack.htm"); ?>
<?php include("H5E/H5Ecreate_msg.htm"); ?>
<?php include("H5E/H5Ecreate_stack.htm"); ?>
<?php include("H5E/H5Eget_auto.htm"); ?>
<?php include("H5E/H5Eget_auto1.htm"); ?>
<?php include("H5E/H5Eget_auto2.htm"); ?>
<?php include("H5E/H5Eget_class_name.htm"); ?>
<?php include("H5E/H5Eget_current_stack.htm"); ?>
<?php include("H5E/H5Eget_major.htm"); ?>
<?php include("H5E/H5Eget_minor.htm"); ?>
<?php include("H5E/H5Eget_msg.htm"); ?>
<?php include("H5E/H5Eget_num.htm"); ?>
<?php include("H5E/H5Epop.htm"); ?>
<?php include("H5E/H5Eprint.htm"); ?>
<?php include("H5E/H5Eprint1.htm"); ?>
<?php include("H5E/H5Eprint2.htm"); ?>
<?php include("H5E/H5Epush.htm"); ?>
<?php include("H5E/H5Epush1.htm"); ?>
<?php include("H5E/H5Epush2.htm"); ?>
<?php include("H5E/H5Eregister_class.htm"); ?>
<?php include("H5E/H5Eset_auto.htm"); ?>
<?php include("H5E/H5Eset_auto1.htm"); ?>
<?php include("H5E/H5Eset_auto2.htm"); ?>
<?php include("H5E/H5Eset_current_stack.htm"); ?>
<?php include("H5E/H5Eunregister_class.htm"); ?>
<!-- unused file: H5E/H5Ewalk_cb.htm -->
<?php include("H5E/H5Ewalk.htm"); ?>
<?php include("H5E/H5Ewalk1.htm"); ?>
<?php include("H5E/H5Ewalk2.htm"); ?>


<!-- HEADER RIGHT " " -->
<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" -->
<hr>
<center>
<table border=0 width=98%>
<tr><td valign=top align=left>
<a href="../index.html">HDF5 documents and links</a>&nbsp;<br>
<a href="../H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
<a href="../UG/HDF5_Users_Guide-Responsive HTML5/index.html">HDF5 User&rsquo;s Guide</a>&nbsp;<br>
<!--
<a href="Glossary.html">Glossary</a><br>
-->
</td>
<td valign=top align=right>
In the 
<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;
<font size="-1"><br>
<a href="../HL/RM_H5DS.html">H5DS</a>&nbsp;&nbsp;
<a href="../HL/RM_H5IM.html">H5IM</a>&nbsp;&nbsp;
<a href="../HL/RM_H5LT.html">H5LT</a>&nbsp;&nbsp;
<a href="../HL/RM_H5PT.html">H5PT</a>&nbsp;&nbsp;
<a href="../HL/RM_H5TB.html">H5TB</a>&nbsp;
<a href="../HL/RM_HDF5Optimized.html">Optimized</a>&nbsp;
<br>
<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
<a href="RM_H5L.html">H5L</a>&nbsp;
<br>
<a href="RM_H5O.html">H5O</a>&nbsp;&nbsp;
<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
<a href="RM_H5PL.html">H5PL</a>&nbsp;&nbsp;
<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
<a href="RM_H5Z.html">H5Z</a>&nbsp;
<br>
<a href="Tools.html">Tools</a>&nbsp;&nbsp;
<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
<a href="../fortran/index.html">Fortran</a>&nbsp;&nbsp;
<a href="APICompatMacros.html">Compatibility Macros</a>&nbsp;
<br>
<a href="CollectiveCalls.html">Collective Calls in Parallel</a>&nbsp;
</font>
<!--
<br>
<i><font size=-1>(Printable <a href="http://hdfgroup.org/HDF5/doc/PSandPDF/HDF5_RefManual.PDF">PDF</a> of this Reference Manual)</font></i>&nbsp;
-->

</td></tr>
</table>
</center>
<hr>
<!-- #EndLibraryItem -->

<?php include("../ed_libs/Footer2.htm"); ?>

<SCRIPT LANGUAGE="JAVASCRIPT">
<!--
document.writeln("Last modified: 9 October 2014");
-->
</SCRIPT>
 
</body>
</html>

