[C++-sig] Python exceptions in functions called from C++
Stefan Seefeld
seefeld at sympatico.ca
Wed Jun 9 21:41:14 CEST 2010
On 06/09/2010 03:11 PM, Charles Solar wrote:
> I have a boost python library that I build python scripts with. I am
> not embedding python, I think that is worth mentioning right off the bat.
> In my C++ library I have a separate thread calling into python
> occasionally
If you call Python from C++, why are you saying you are not embedding
Python ? What do you mean by that ?
> and I am finding that if the function I call in python has a python
> error in it, eg:
>
> def callMe():
> crash = "Hello world"
> return crash()
>
> When my C++ app calls that I get the error_already_set exception from
> boost python. My problem with that is it offers no information from
> python like 'Strings are not callable on line 200 in crash.py' So my
> question is how can I connect the error_already_set exception on the
> other thread to python's exception handler so if python produces an
> exception while calling from C++ I get the python exception
> information and not just 'error already set'?
Right now you need to use the Python C API to fetch those details (see
http://docs.python.org/c-api/exceptions.html?highlight=pyerr_fetch#PyErr_Fetch).
I keep meaning to write C++ wrappers around that API, but it always
falls off of my (fixed-size) TODO list. Perhaps someone else will beat
me to it ? ;-)
Stefan
--
...ich hab' noch einen Koffer in Berlin...
More information about the Cplusplus-sig
mailing list