Hi

I am writing some C code which sets and retrieves a Python exception. I set the exception using PyErr_SetString(), and retrieve it in 2 ways: 1) using PyErr_Occurred() and 2) Using sys.exc_type. However, I get two different results and am very puzzled by this apparent inconsistency. Could anyone please clarify what I'm missing? I need both to work consistently for my application.

Here is the C code and the output

#include "Python.h"

#define OPRINT(o) PyObject_Print((o),stdout,0);printf("\n")

int main() {
   PyObject *sysmod,*etype1,*etype2;

   Py_Initialize();
   sysmod = PyImport_ImportModule("sys");
PyErr_SetString(PyExc_Exception,"HI"); //set exception

   etype1 = PyObject_GetAttrString(sysmod,"exc_type");  //sys.exc_type
   etype2 = PyErr_Occurred();

   printf("sys.exc_type : "); OPRINT(etype1);
   printf("PyErr_Occurred() : "); OPRINT(etype2);
}


The output

sys.exc_type : None
PyErr_Occurred() : <type 'exceptions.Exception'>


Thank you
Raj
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to