correctly handle again NotImplementedError in Python view providers

This commit is contained in:
wmayer
2019-02-22 13:26:33 +01:00
parent fa5fb1ea9c
commit 2f359cbee1

View File

@@ -453,6 +453,12 @@ ViewProviderPythonFeatureImp::setEdit(int ModNum)
}
}
catch (Py::Exception&) {
// If an explicit NotImplementedError is raised then
// handle it differently to other RuntimeError
if (PyErr_ExceptionMatches(PyExc_NotImplementedError)) {
PyErr_Clear();
return NotImplemented;
}
// If a runtime error occurred when calling setEdit
// then handle it like returning false
if (PyErr_ExceptionMatches(PyExc_RuntimeError)) {
@@ -503,6 +509,18 @@ ViewProviderPythonFeatureImp::unsetEdit(int ModNum)
}
}
catch (Py::Exception&) {
// If an explicit NotImplementedError is raised then
// handle it differently to other RuntimeError
if (PyErr_ExceptionMatches(PyExc_NotImplementedError)) {
PyErr_Clear();
return NotImplemented;
}
// If a runtime error occurred when calling setEdit
// then handle it like returning false
if (PyErr_ExceptionMatches(PyExc_RuntimeError)) {
PyErr_Clear();
return Rejected;
}
Base::PyException e; // extract the Python error text
e.ReportException();
}