Catching Python exceptions in C
Ivan Illarionov
ivan.illarionov at gmail.com
Tue Dec 9 04:33:37 EST 2008
On Dec 8, 9:42 pm, Senthil Kumar <senthil... at 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.
More information about the Python-list
mailing list