Hi,

In my extension I'm calling python functions as callbacks from a thread generated in an external module.
This works very well, but I'm not sure about the error handling.

1. Normally the python interpreter exits if it runs on an unhandled error. Is this the preferred standard behavior for this case too ?
2. How can I implement this in my error handling ?

Here is my code so far. If an error happens in the python code it is printed to stderr, but the python script is still running in the main thread.

void FUNC_C_DECL coreCommandReadyCallback(TML_COMMAND_HANDLE cmd, TML_POINTER data)
{
  // Calling Python out of a non- python created thread
  PyGILState_STATE gstate;
  try {
    gstate = PyGILState_Ensure();

    PythonCallbackData* callbackData = (PythonCallbackData*) data;

    PyObject *arglist;

    PyObject *pythonCBFunc = callbackData->pCBFunc;
    /* Time to call the callback */
    arglist = Py_BuildValue("(LO)", cmd, callbackData->pCBData);
    PyObject* result = PyEval_CallObject(pythonCBFunc, arglist);
    Py_DECREF(arglist);

    if ( PyErr_Occurred() ) {
      PyErr_Print();
      PyErr_SetString(PyExc_TypeError, "PyErr_Occurred");
    }


    // Release calling Python out of a non- python created thread
    PyGILState_Release(gstate);
  }
  catch (...) {
    printf ("An Exception Happened\n");
  }
}

Cheers,
Connor

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to