pybind11
pybind11 copied to clipboard
[BUG]: Can't catch the exception in Python that raise in C++ using py::error_already_set()
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