If you download the latest source, with the Java API, or the hdf-java 3.2.1 
source - you can inspect the JNI code for exceptions in the native hdf5 
exceptionImp.c file. 
Another source of using the exception API for custom error reporting is the 
tools library and h5dump.

Allen

On Tuesday, November 29, 2016 9:20:03 AM CST Elvis Stansvik wrote:
> Hi Rob,
> 
> 2016-11-28 21:43 GMT+01:00 Rob Latham <[email protected]>:
> 
> >
> >
> > On 11/08/2016 01:18 PM, Elvis Stansvik wrote:
> >
> >> Hi all,
> >>
> >> Is it possible to get some more informative error from H5Fopen than
> >> "it failed"? E.g. if it was a permission problem, nonexistent file,
> >> corrupted file, ...? Or must I try to deduce the reason for the
> >> failure myself? (always risky to do such checks pre- or post-mortem so
> >> to speak..).
> >>
> >
> > I think you are going to have to share your output with the list. Whenever
> > *I* run hdf5 and get an error I get screenfuls of information.
> >
> > For example, here's a simple hdf5 program trying to open a file for which
> > I have removed all read and write permissions:
> >
> 
> Yes, and I'm sorry. I should have replied to myself quite soon after I sent
> my message, but somehow forgot about it.
> 
> When I first wrote my message, I was
> 
>   1. working through the C++ API, and
>   2. building my program in release mode.
> 
> Working through the C++ API meant I was using
> H5::Exception::getDetailMsg(), hoping to get some detailed message, but it
> was giving me something like "H5Fopen failed" (which is why I mentioned the
> H5Fopen C function in my post). Building my program in release mode also
> meant I did not get the detailed error stack printout that the C layer does
> by default in debug mode (like you showed below). That's why I was a little
> puzzled.
> 
> Since I wrote my message, I have
> 
>   1. switched to working with the C API (through a simple HDF5File C++
> class of my own),
>   2. learned all about the gory details of the H5E API [1] and error
> handling in chapter 9 of the User Guide.
> 
> So I'm all good now :) Though I must say the error handling API is quite
> complicated (I still haven't written my custom error walking/formatting
> functions, so only relying on the default printouts I get in debug mode).
> 
> One thing that I would wish for is
> 
>   1. an API similar to H5Eprint that would take an output char* parameter
> instead of a FILE*,
>   2. a simpler API to just get the human readable message (if any) for the
> most likely "root cause" for the latest error.
> 
> 1 because if you're interested in getting the error trace into a string
> (for e.g. showing it in the UI), then setting up an in-memory FILE* is not
> something that can be easily done in a portable way (I know about
> fmemopen/open_memstream, but they are POSIX). I know this can be done by
> setting up your own error stack walking function, but it's quite awkward to
> have to do that, especially if you're happy with the formatting that HDF5
> does by default, and you just want the result as a string instead.
> 
> 2 because like others have mentioned, sometimes you're not interested in
> the full trace, but only the likely root cause (which is probably somewhere
> at the bottom of the stack).
> 
> Anyway, thanks for chiming in, and sorry again for not following up on my
> own post earlier.
> 
> Elvis
> 
> 
> >
> > HDF5-DIAG: Error detected in HDF5 (1.8.16) thread 0:
> >   #000: ../../../hdf5-1.8.16/src/H5F.c line 604 in H5Fopen(): unable to
> > open file
> >     major: File accessibilty
> >     minor: Unable to open file
> >   #001: ../../../hdf5-1.8.16/src/H5Fint.c line 992 in H5F_open(): unable
> > to open file: time = Mon Nov 28 14:41:40 2016
> > , name = 'try.h5', tent_flags = 1
> >     major: File accessibilty
> >     minor: Unable to open file
> >   #002: ../../../hdf5-1.8.16/src/H5FD.c line 993 in H5FD_open(): open
> > failed
> >     major: Virtual File Layer
> >     minor: Unable to initialize object
> >   #003: ../../../hdf5-1.8.16/src/H5FDsec2.c line 339 in H5FD_sec2_open():
> > unable to open file: name = 'try.h5', errno = 13, error message =
> > 'Permission denied', flags = 1, o_flags = 2
> >     major: File accessibilty
> >     minor: Unable to open file
> >
> >
> >> Thanks in advance,
> >> Elvis
> >>
> >> _______________________________________________
> >> Hdf-forum is for HDF software users discussion.
> >> [email protected]
> >> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> >> Twitter: https://twitter.com/hdf5
> >>
> >>
> > _______________________________________________
> > Hdf-forum is for HDF software users discussion.
> > [email protected]
> > http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> > Twitter: https://twitter.com/hdf5
> >
> 



_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

Reply via email to