[petsc-users] Correct usage of CHKERRXX
Karl Rupp
rupp at iue.tuwien.ac.at
Fri Aug 8 07:16:25 CDT 2014
Hi Cedric,
> I need to call several functions from Petsc in a C++ code.
> I would like to handle manage errors from Petsc with exceptions.
>
> In Petsc's documentation, I found that there exists a macro to do that :
> CHKERRXX.
>
> How does it work?
It checks for a nonzero error code and returns from the function
immediately if that is the case. Have a look at the implementation here:
http://www.mcs.anl.gov/petsc/petsc-3.5/include/petscerror.h.html
> Which kind of exception does it throw in case of failure?
> Do you inherit from std::exception?
> Is there an exception for each error code?
Neither. You would have to write your own wrapper around it, translating
the error codes into exceptions. PETSc cannot use exceptions since it is
a C library. Some people also argue against exceptions because they tend
to bloat the executable for all the roll-back code.
Best regards,
Karli
More information about the petsc-users
mailing list