You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by aj...@apache.org on 2007/02/28 12:26:22 UTC

svn commit: r512711 - /incubator/tuscany/cpp/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.cpp

Author: ajborley
Date: Wed Feb 28 03:26:22 2007
New Revision: 512711

URL: http://svn.apache.org/viewvc?view=rev&rev=512711
Log:
Improved Python error messages: now logs errors raised inside scripts

Modified:
    incubator/tuscany/cpp/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.cpp

Modified: incubator/tuscany/cpp/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.cpp?view=diff&rev=512711&r1=512710&r2=512711
==============================================================================
--- incubator/tuscany/cpp/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.cpp (original)
+++ incubator/tuscany/cpp/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.cpp Wed Feb 28 03:26:22 2007
@@ -867,9 +867,30 @@
                             Py_XDECREF(elementTreeModule);
                             Py_XDECREF(elementTreeModuleName);
 
-                            string msg = "Error whilst calling Python function "+operation.getName();
+                            string msg = "Error whilst calling Python function "+operation.getName()+": ";
                             if(PyErr_Occurred())
                             {
+                                PyObject *pErrorType, *pErrorValue, *pErrorTraceback;
+                                PyErr_Fetch(&pErrorType, &pErrorValue, &pErrorTraceback);
+ 
+                                if (pErrorType != NULL && pErrorValue != NULL)
+                                {
+                                    PyObject* pErrorTypeStr = PyObject_Str(pErrorType);    
+                                    PyObject* pErrorValueStr = PyObject_Str(pErrorValue);    
+                                    msg += PyString_AsString(pErrorTypeStr);
+                                    msg += " : ";
+                                    msg += PyString_AsString(pErrorValueStr);
+                                    Py_DECREF(pErrorTypeStr);
+                                    Py_DECREF(pErrorValueStr);                                    
+                                }
+                                else
+                                {
+                                    msg += "No Python Error information provided";                                    
+                                }
+                                Py_XDECREF(pErrorType);
+                                Py_XDECREF(pErrorValue);         
+                                Py_XDECREF(pErrorTraceback);    
+
                                 PyErr_Print();
                             }
                             



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org