pybind11 icon indicating copy to clipboard operation
pybind11 copied to clipboard

[BUG]: Can't catch the exception in Python that raise in C++ using py::error_already_set()

Open QunBB opened this issue 6 months ago • 0 comments

Required prerequisites

  • [X] Make sure you've read the documentation. Your issue may be addressed there.
  • [X] Search the issue tracker and Discussions to verify that this hasn't already been reported. +1 or comment there if it has.
  • [X] Consider asking first in the Gitter chat room or in a Discussion.

What version (or hash if on master) of pybind11 are you using?

2.10.0

Problem description

When i use the below reproducible example code, I can't catch the exception IndexError in Python that raise in C++. The log is:

before exception

Process finished with exit code 139 (interrupted by signal 11:SIGSEGV)

Reproducible example code

m.def("test_exception", []() { 
        std::cout << "before exception" << std::endl;

        PyErr_SetString(PyExc_IndexError, "Here is an IndexError");
        throw py::error_already_set();
        
        std::cout << "after exception" << std::endl;
        });
test_exception()

Is this a regression? Put the last known working version here if it is.

Not a regression

QunBB avatar Aug 06 '24 10:08 QunBB