Hello Jim, On 16 November 2014 20:23, Jim Bosch <jbo...@astro.princeton.edu> wrote:
> On Sun, Nov 16, 2014 at 1:51 PM, Francesco Biscani <bluesca...@gmail.com> > wrote: > >> >> This can result in an exception being thrown from Python (e.g., >> comparison of a numpy array with zero). What happens in this case is that >> a bp::error_already_set is thrown and not caught by anything, and the >> execution terminates. >> >> I can catch the error_already_set in the comparison operator, print >> information about the Python exception that was thrown, etc. but what I >> clearly need to do here is to stop the execution of the program and somehow >> get back to the Python interpreter and translate the exception. >> >> > bp::error_already_set should actually already be doing exactly what you > want; the reason it exists is so Boost.Python can catch it and translate it > into a Python exception, and any Boost.Python-wrapped function that throws > error_already_set should have it caught and translated without having to do > anything special. > > That means your problem is actually one of debugging why that's not > working properly. There have been some reports of problems with > error_already_set in cases where some C++ compilers/linkers don't recognize > an exception as being the same across dynamic library boundaries. I'm not > familiar with the details, but that's my best guess as to what's going on. > Hopefully that will provide you a starting point for debugging and googling > for solutions (or maybe someone else on this list can help diagnose it). > Thanks for the pointers, I guess I will keep on doing some experiments trying to understand exactly what is going on. I have a Python 3 install available as well, maybe I can try to see if anything changes there. Cheers, Francesco.
_______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org https://mail.python.org/mailman/listinfo/cplusplus-sig