On Dec 9, 12:33 pm, Ivan Illarionov <[EMAIL PROTECTED]> wrote: > On Dec 8, 9:42 pm, Senthil Kumar <[EMAIL PROTECTED]> wrote: > > > Hi Pythoneers ! > > Can somebody give a quick solution? > > I am trying to raise exceptions in python and trying to handle it in > > C. > > I am able to raise exceptions successfully. However could not catch > > those in C. > > I am using the following function to run the python from C: > > Pyrun_SimpleString(). > > After the exception is raised, I am checking PyErr_Occurred(). It > > always returns NULL, and I cannot catch the exception. > > Pls help me a way out. > > > Thanx in advance ! > > I use something like this: > > if (PyErr_Occurred()) { > if (PyErr_ExceptionMatches(ExceptionName)) { > /* do something about ExceptionName */ > } else if (PyErr_ExceptionMatches(AnotherExceptionName)) { > /* if we want to get the exception string */ > PyObject *errtype, *errvalue, *traceback; > PyErr_Fetch(&errtype, &errvalue, &traceback); > if(errvalue != NULL) { > PyObject *s = PyObject_Str(errvalue); > /* Now 'PyString_AS_STRING(s)' > contains C string of error message > do something with it > */ > Py_DECREF(s); > } > Py_XDECREF(errvalue); > Py_XDECREF(errtype); > Py_XDECREF(traceback); > } > > } > > Goof luck.
And, as others have said, use 'PyRun_String', not 'PyRun_SimpleString' Sorry, I missed this in previous reply. -- http://mail.python.org/mailman/listinfo/python-list