diff options
Diffstat (limited to 'py/modules/IcePy/Util.cpp')
-rw-r--r-- | py/modules/IcePy/Util.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/py/modules/IcePy/Util.cpp b/py/modules/IcePy/Util.cpp index 49efd0e6a56..3df452a7784 100644 --- a/py/modules/IcePy/Util.cpp +++ b/py/modules/IcePy/Util.cpp @@ -592,12 +592,22 @@ IcePy::throwPythonException(PyObject* ex) } else { + ostringstream ostr; + PyObject* cls = (PyObject*)((PyInstanceObject*)ex)->in_class; - IcePy::PyObjectHandle str = PyObject_Str(cls); - assert(str.get() != NULL); + IcePy::PyObjectHandle className = PyObject_Str(cls); + assert(className.get() != NULL); + + ostr << PyString_AsString(className.get()); + + IcePy::PyObjectHandle msg = PyObject_Str(ex); + if(msg.get() != NULL && strlen(PyString_AsString(msg.get())) > 0) + { + ostr << ": " << PyString_AsString(msg.get()); + } Ice::UnknownException e(__FILE__, __LINE__); - e.unknown = PyString_AsString(str.get()); + e.unknown = ostr.str(); throw e; } } |