# CHKERRQ

Checks error code, if non-zero it calls the error handler and then returns Not Collective

### Synopsis

    void CHKERRQ(PetscErrorCode errorcode)

### Input Parameters

errorcode -nonzero error code, see the list of standard error codes in include/petscerror.h

### Notes

Once the error handler is called the calling function is then returned from with the given error code.

Experienced users can set the error handler with PetscPushErrorHandler().

CHKERRQ(n) is fundamentally a macro replacement for if (n) return(PetscError(...,n,...));

Although typical usage resembles "void CHKERRQ(PetscErrorCode)" as described above, for certain uses it is highly inappropriate to use it in this manner as it invokes return(PetscErrorCode). In particular, it cannot be used in functions which return(void) or any other datatype. In these types of functions, a more appropriate construct for using PETSc Error Handling would be if (n) {PetscError(....); return(YourReturnType);}

### See Also

PetscTraceBackErrorHandler(), PetscPushErrorHandler(), PetscError(), SETERRQ(), CHKMEMQ, SETERRQ1(), SETERRQ2(), SETERRQ2()

Level:beginner
Location:src/sys/src/error/../../../../include/petscerror.h
Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages

### Examples

src/sys/examples/tutorials/ex1.c.html
src/sys/examples/tutorials/ex2.c.html
src/sys/examples/tutorials/ex3.c.html
src/sys/examples/tutorials/ex5.c.html
src/vec/is/examples/tutorials/ex1.c.html
src/vec/is/examples/tutorials/ex2.c.html
src/vec/is/examples/tutorials/ex3.c.html
src/vec/is/examples/tutorials/ex4.c.html
src/vec/examples/tutorials/ex1.c.html
src/vec/examples/tutorials/ex1e.c.html
src/vec/examples/tutorials/ex2.c.html