Functions for handling errors that occur within HDF5
The Error interface provides error handling in the form of a stack. The
FUNC_ENTER() 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.
Certain API functions in the H5E package, such as
H5Eprint1, 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,
H5Fopen clears the error stack while
H5F_open does not.
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.
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.