On Dec 9, 12:33*pm, Ivan Illarionov <ivan.illario...@gmail.com> wrote:
> On Dec 8, 9:42*pm, Senthil Kumar <senthil...@gmail.com> 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.
|