fixes #0001422: Subclass Exception
inherit Base.FreeCADError form RuntimeError inherit Part.OCCError from Base.FreeCADError inherit OCCDomainError from Part.OCCError inherit OCCRangeError from Part.OCCError inherit OCCConstructionError from OCCDomainError inherit OCCDimensionError from OCCDomainError Added PY_CATCH_OCC macro replace PyExc_Exception use FreeCADError in makeWireString catch exception in BSplineCurve.increasedegree
This commit is contained in:
@@ -377,6 +377,9 @@ static PyObject * s##DFUNC (PyObject *self, PyObject *args, PyObject * /*kwd*/){
|
||||
*/
|
||||
#define PYMETHODEDEF(FUNC) {"" #FUNC "",(PyCFunction) s##FUNC,Py_NEWARGS},
|
||||
|
||||
BaseExport extern PyObject* BaseExceptionFreeCADError;
|
||||
#define PY_FCERROR (Base::BaseExceptionFreeCADError ? \
|
||||
BaseExceptionFreeCADError : PyExc_RuntimeError)
|
||||
|
||||
|
||||
/** Exception handling for python callback functions
|
||||
@@ -427,7 +430,7 @@ static PyObject * s##DFUNC (PyObject *self, PyObject *args, PyObject * /*kwd*/){
|
||||
str += e.what(); \
|
||||
str += ")"; \
|
||||
e.ReportException(); \
|
||||
Py_Error(PyExc_Exception,str.c_str()); \
|
||||
Py_Error(Base::BaseExceptionFreeCADError,str.c_str()); \
|
||||
} \
|
||||
catch(std::exception &e) \
|
||||
{ \
|
||||
@@ -436,7 +439,7 @@ static PyObject * s##DFUNC (PyObject *self, PyObject *args, PyObject * /*kwd*/){
|
||||
str += e.what(); \
|
||||
str += ")"; \
|
||||
Base::Console().Error(str.c_str()); \
|
||||
Py_Error(PyExc_Exception,str.c_str()); \
|
||||
Py_Error(Base::BaseExceptionFreeCADError,str.c_str()); \
|
||||
} \
|
||||
catch(const Py::Exception&) \
|
||||
{ \
|
||||
@@ -444,11 +447,11 @@ static PyObject * s##DFUNC (PyObject *self, PyObject *args, PyObject * /*kwd*/){
|
||||
} \
|
||||
catch(const char *e) \
|
||||
{ \
|
||||
Py_Error(PyExc_Exception,e); \
|
||||
Py_Error(Base::BaseExceptionFreeCADError,e); \
|
||||
} \
|
||||
catch(...) \
|
||||
{ \
|
||||
Py_Error(PyExc_Exception,"Unknown C++ exception"); \
|
||||
Py_Error(Base::BaseExceptionFreeCADError,"Unknown C++ exception"); \
|
||||
}
|
||||
|
||||
#else
|
||||
@@ -460,7 +463,7 @@ static PyObject * s##DFUNC (PyObject *self, PyObject *args, PyObject * /*kwd*/){
|
||||
str += e.what(); \
|
||||
str += ")"; \
|
||||
e.ReportException(); \
|
||||
Py_Error(PyExc_Exception,str.c_str()); \
|
||||
Py_Error(Base::BaseExceptionFreeCADError,str.c_str()); \
|
||||
} \
|
||||
catch(std::exception &e) \
|
||||
{ \
|
||||
@@ -469,7 +472,7 @@ static PyObject * s##DFUNC (PyObject *self, PyObject *args, PyObject * /*kwd*/){
|
||||
str += e.what(); \
|
||||
str += ")"; \
|
||||
Base::Console().Error(str.c_str()); \
|
||||
Py_Error(PyExc_Exception,str.c_str()); \
|
||||
Py_Error(Base::BaseExceptionFreeCADError,str.c_str()); \
|
||||
} \
|
||||
catch(const Py::Exception&) \
|
||||
{ \
|
||||
@@ -477,7 +480,7 @@ static PyObject * s##DFUNC (PyObject *self, PyObject *args, PyObject * /*kwd*/){
|
||||
} \
|
||||
catch(const char *e) \
|
||||
{ \
|
||||
Py_Error(PyExc_Exception,e); \
|
||||
Py_Error(Base::BaseExceptionFreeCADError,e); \
|
||||
}
|
||||
|
||||
#endif // DONT_CATCH_CXX_EXCEPTIONS
|
||||
|
||||
Reference in New Issue
Block a user