Den 29 nov. 2016 3:32 em skrev "Allen Byrne" <[email protected]>:
>
> 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.

Ah, thanks for the pointers Allen. I actually think I came across the JNI
code during my googlings, but didn't look closer at it before I got busy
with other things. I'll take a look when I'm back at it.

Elvis

>
> 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