:orphan: # PetscCallVoid Like `PetscCall()` but for functions returning `void` ## Synopsis ``` #include void PetscCall(PetscFunction(args)) ``` Not Collective; No Fortran Support ## Input Parameter - ***PetscFunction -*** any PETSc function that returns an error code ## Example Usage ```none void foo() { KSP ksp; PetscFunctionBeginUser; // OK, properly handles PETSc error codes PetscCallVoid(KSPCreate(PETSC_COMM_WORLD, &ksp)); PetscFunctionReturn(PETSC_SUCCESS); } PetscErrorCode bar() { KSP ksp; PetscFunctionBeginUser; // ERROR, Non-void function 'bar' should return a value PetscCallVoid(KSPCreate(PETSC_COMM_WORLD, &ksp)); // OK, returning PetscErrorCode PetscCall(KSPCreate(PETSC_COMM_WORLD, &ksp)); PetscFunctionReturn(PETSC_SUCCESS); } ``` ## Notes Has identical usage to `PetscCall()`, except that it returns `void` on error instead of a `PetscErrorCode`. See `PetscCall()` for more detailed discussion. Note that users should prefer `PetscCallAbort()` to this routine. While this routine does "handle" errors by returning from the enclosing function, it effectively gobbles the error. Since the enclosing function itself returns `void`, its callers have no way of knowing that the routine returned early due to an error. `PetscCallAbort()` at least ensures that the program crashes gracefully. ## See Also `PetscCall()`, `PetscErrorCode` ## Level beginner ## Location include/petscerror.h --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/include/petscerror.h) [Index of all Sys routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)