Hi Andre I'm writing the 'API' in C, and calling it from LabVIEW. Most of the time I make direct calls to the HDF5 library from LabVIEW and can collect the errors properly. The problem occurs when I have these higher level functions written in C that are called by LabVIEW. The functions need to do clean up before returning, and that cleanup clears the error stack.
I suppose in the event of an error, I could gather the stack, call my cleanup, and then push the stack back. That seems convoluted, but workable. Any other ideas? Jason On Friday, December 19, 2014, Андрей Парамонов <[email protected]> wrote: > 18.12.2014 19:14, Jason Sommerville пишет: > >> I have several questions about error handling that I need cleared up. As >> I understand it, any time one calls an API function the error stack is >> cleared prior to the call being executed. Then, all the error that occur >> inside of that API call are pushed onto the stack. This behavior happens >> on all API functions, including (of particular interest) the H5?close. >> >> So, what happens when one is creating one's own API-like functions. I >> have two specific use-cases in mind. >> >> In the first case, I have several functions which are wrappers around >> H5Dread, H5Dwrite, H5Aread and H5Awrite. >> These wrappers manipulate *and copy* the dataspaces and datatypes, etc. >> If any errors occur, the function jumps to the end and closes any >> handles that it opened. If I'm understanding what I'm seeing correctly, >> when it closes these handles, the error stack is getting cleared. >> Therefore, the error that actually caused it to exit is no longer >> available to the caller. >> >> In the second case, I have callback functions (for datatype conversion) >> which also copy and manipulate some hid_ts. Again, the problem seems to >> primary be with the close functions for the copies which execute on >> function exit, regardless of whether it's a normal exit or an error exit. >> >> What is the proper method, from outside the API, to handle these issues? >> > > Hello Jason! > > I wonder what language you are using. > I'm using Delphi, and after each HDF5 API call I check for abnormal exit > status. In case of error, I gather HDF5 exception info (stack) and raise > native Delphi exception. > Delphi native exceptions are quite powerful (finalization sections, > exceptions during exception handling) -- I do not have to do anything > additional. I believe other contemporary systems (Java/.NET) also have > solid exception handling facilities. > > Best wishes, > Andrey Paramonov > > > -- > This message has been scanned for viruses and > dangerous content by MailScanner, and is > believed to be clean. > > > _______________________________________________ > Hdf-forum is for HDF software users discussion. > [email protected] > http://mail.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://mail.lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org Twitter: https://twitter.com/hdf5
