| Introduction to HDF5 HDF5 Reference Manual Other HDF5 documents and links | And in this document, the 
   HDF5 User's Guide:    
      Files Datasets Data Types Dataspaces Groups References Attributes Property Lists Error Handling Filters Caching Chunking Debugging Environment DDL Ragged Arrays | 
When an error occurs deep within the HDF5 library a record is pushed onto an error stack and that function returns a failure indication. Its caller detects the failure, pushes another record onto the stack, and returns a failure indication. This continues until the application-called API function returns a failure indication (a negative integer or null pointer). The next API function which is called (with a few exceptions) resets the stack.
In normal circumstances, an error causes the stack to be printed on the standard error stream. The first item, number "#000" is produced by the API function itself and is usually sufficient to indicate to the application programmer what went wrong.
| If an application calls  
 | 
The error stack can also be printed and manipulated by these
      functions, but if an application wishes make explicit calls to
      H5Eprint() then the automatic printing should be
      turned off to prevent error messages from being displayed twice
      (see H5Eset_auto() below).
    
herr_t H5Eprint (FILE *stream)
      HDF5-DIAG: Error detected in thread 0.
	herr_t H5Eclear (void)
      H5Eprint()).
    Sometimes an application will call a function for the sake of
      its return value, fully expecting the function to fail.  Under
      these conditions, it would be misleading if an error message
      were automatically printed.  Automatic printing of messages is
      controlled by the H5Eset_auto() function:
    
herr_t H5Eset_auto (herr_t(*func)(void*),
	  void *client_data)
      H5Eprint() (cast appropriately) and
	client_data is the standard error stream pointer,
	stderr.
	herr_t H5Eget_auto (herr_t(**func)(void*),
	  void **client_data)
      
| An application can temporarily turn off error messages while "probing" a function. 
 Or automatic printing can be disabled altogether and error messages can be explicitly printed. 
 | 
The application is allowed to define an automatic error
      traversal function other than the default
      H5Eprint().  For instance, one could define a
      function that prints a simple, one-line error message to the
      standard error stream and then exits.
    
| The application defines a function to print a simple error message to the standard error stream. 
 The function is installed as the error handler by saying 
 | 
The H5Eprint() function is actually just a wrapper
      around the more complex H5Ewalk() function which
      traverses an error stack and calls a user-defined function for
      each member of the stack.
    
herr_t H5Ewalk (H5E_direction_t direction,
	  H5E_walk_t func, void *client_data)
      H5E_WALK_UPWARD then traversal begins at the
	inner-most function that detected the error and concludes with
	the API function.  The opposite order is
	H5E_WALK_DOWNWARD.
	
      - typedef herr_t (*H5E_walk_t)(int n,
	  H5E_error_t *eptr, void
	  *client_data)
- An error stack traversal callback function takes three
	arguments: n is a sequence number beginning at zero
	for each traversal, eptr is a pointer to an error
	stack member, and client_data is the same pointer
	passed to H5Ewalk().
 
 
- typedef struct {
    H5E_major_t maj_num;
    H5E_minor_t min_num;
    const char  *func_name;
    const char  *file_name;
    unsigned    line;
    const char  *desc;
} H5E_error_t;
 
- The maj_num and min_num are major
	and minor error numbers, func_name is the name of
	the function where the error was detected,
	file_name and line locate the error
	within the HDF5 library source code, and desc
	points to a description of the error.
        
 
 
- const char *H5Eget_major (H5E_major_t num)
- const char *H5Eget_minor (H5E_minor_t num)
- These functions take a major or minor error number and
        return a constant string which describes the error.  If
        num is out of range than a string like "Invalid major
        error number" is returned.
    
| This is the implementation of the default error stack traversal callback. 
 | 
| Introduction to HDF5 HDF5 Reference Manual Other HDF5 documents and links | And in this document, the 
   HDF5 User's Guide:    
      Files Datasets Data Types Dataspaces Groups References Attributes Property Lists Error Handling Filters Caching Chunking Debugging Environment DDL Ragged Arrays |