我打开现有的HDF5文件来追加数据; 我想确保调用的组/A存在后续访问.我正在寻找一种简单的方法来创建/A条件(创建并返回新组,如果不存在,或返回现有组).一种方法是测试/A存在.我怎样才能有效地做到这一点?
根据API文档,我可以这样做:
H5::H5File h5file(filename,H5F_ACC_RDWR);
H5::H5Group grp;
try{
grp=h5file.openGroup("A");
} catch(H5::Exception& e){
/* group does not exists, create it */
grp=h5file.createGroup("A");
}
Run Code Online (Sandbox Code Playgroud)
但明显的丑陋来自这样一个事实,即例外用于传递信息,而这些信息根本不是特例.
有H5 :: CommonFG :: getObjinfo,它似乎以这样的方式包装H5Gget_objinfo,C例程的false(不存在)返回值抛出异常; 所以再次出现同样的问题.
在这种情况下,使用C API是否干净,或者是否有一些直接设计用于测试C++ API存在的函数,我忽略了?