The exception has been caught and the execution reaches the print() statement. I think you just need to disable the PETSc error handler, try with this:
PETSc.Sys.pushErrorHandler("ignore") Jose > El 27 nov 2023, a las 16:41, Barry Smith <bsm...@petsc.dev> escribió: > > > I see > > cdef extern from * nogil: > ctypedef enum PetscErrorCode: > PETSC_SUCCESS > PETSC_ERR_PLIB > PETSC_ERR_SUP > PETSC_ERR_USER > PETSC_ERR_MEM > PETSC_ERR_MPI > PETSC_ERR_PYTHON > > ctypedef enum PetscErrorType: > PETSC_ERROR_INITIAL > PETSC_ERROR_REPEAT > > cdef PetscErrorCode CHKERR(PetscErrorCode) except PETSC_ERR_PYTHON nogil > > in src/binding/petsc4py/src/petsc4py/PETSc.pxd > > I don't know enough about cython to know how it could be accessible from > Python code. > > > >> On Nov 27, 2023, at 3:46 AM, Miguel Angel Salazar de Troya >> <miguel.sala...@corintis.com> wrote: >> >> Hello, >> >> Is there any way to get the PETSc error codes in the python interface? The >> test I provided below is just a simple example that I know will run out of >> memory. >> >> Miguel >> >> On Wed, Nov 15, 2023 at 10:00 AM Miguel Angel Salazar de Troya >> <miguel.sala...@corintis.com> wrote: >> Hello, >> >> The following simple petsc4py snippet runs out of memory, but I would like >> to handle it from python with the usual try-except. Is there any way to do >> so? How can I get the PETSc error codes in the python interface? >> >> Thanks >> >> from petsc4py import PETSc >> import sys, petsc4py >> petsc4py.init(sys.argv) >> try: >> m, n = 1000000, 1000000 >> A = PETSc.Mat().createAIJ([m, n], nnz=1e6) >> >> A.assemblyBegin() >> A.assemblyEnd() >> except Exception as e: >> print(f"An error occurred: {e}") >> >> An error occurred: error code 55 >> [0] MatSeqAIJSetPreallocation() at >> /Users/miguel/repos/firedrake-glacierware/src/petsc/src/mat/impls/aij/seq/aij.c:3942 >> [0] MatSeqAIJSetPreallocation_SeqAIJ() at >> /Users/miguel/repos/firedrake-glacierware/src/petsc/src/mat/impls/aij/seq/aij.c:4008 >> [0] PetscMallocA() at >> /Users/miguel/repos/firedrake-glacierware/src/petsc/src/sys/memory/mal.c:408 >> [0] PetscMallocAlign() at >> /Users/miguel/repos/firedrake-glacierware/src/petsc/src/sys/memory/mal.c:53 >> [0] Out of memory. Allocated: 0, Used by process: 59752448 >> [0] Memory requested 18446744064984991744 >> >> >> >