Getting the error in embedded python

G. David Kuhlman dkuhlman at netcom.com
Thu Mar 9 23:58:35 CET 2000


Here is the relevant info from the C API doc:

int PyRun_SimpleString (char *command) 
     Executes the Python source code from command in the __main__
     module. If __main__ does not already exist, it is created.
     Returns 0 on success or -1 if an exception was raised. If
     there was an error, there is no way to get the exception
     information. 



Here is what I do, and it seems to work.  However, according to
Mark's message and the doc on PyRun_SimpleString, it seems that my
call to PyErr_Occurred() is futile.

------------------------------------

result = PyRun_SimpleString(const_cast<char *>(scriptStr));
PyObject * exception = PyErr_Occurred();
if ((result != 0) || (exception != NULL))
{
	if (exception != NULL)
	{
		PyErr_Print();
	}
	// Format an additional error message.
	sprintf(buf, "import sys; sys.stderr.write(\"Error in ...\\n\")", ...);
	result = PyRun_SimpleString(buf);
}

------------------------------------

Boris Ottlewski (Boris.Ottlewski at NOSPAMsystemsoft.de) wrote:
> Hi,
> 
> I just run a simple script with a syntax error:
> 
>   int res = PyRun_SimpleString("import this_module_does_not exist");
>   if (res!=0)
>   {
>        if (PyErr_Occurred())
>       {
>          //never happens
>       }
>    }
> 
> I never get an PyErr_Occured. Also when I do PyErr_Fetch its empty. (res
> is -1 if I got an error).
> 
> Why is that so? How do I get the error message?
> 
> regards,
> 
> Boris Ottlewski
> 
> 



More information about the Python-list mailing list