[C++-sig] Displaying PyErr_Print() error
Paul Grenyer
paul at paulgrenyer.co.uk
Thu Nov 27 13:07:11 CET 2003
Hi
I originally asked this question some weeks ago, but didn't receive a
reply. I've seen from googling that other people have had this problem,
but I haven't seen a solution yet.
I've intergrated boost.python into a COM object and therefore there is
no std::cerr console to display the error message generated by
PyErr_Print() after an exception is thrown.
I've tried redirecting std::cerr to a stream:
catch( const error_already_set& )
{
std::stringstream str;
std::streambuf* streamBuffer = std::cerr.rdbuf( str.rdbuf() );
PyErr_Print();
std::cerr << python << std::endl;
std::cerr.rdbuf( streamBuffer );
throw BadPython( str.str(), __FILE__, __LINE__ );
}
The contents of "python", a string holding the python code that
generated the exception, is correctly send to "str", but the exception
message isn't.
Am I doing something wrong? Is there another way to get the error
generated by PyErr_Print() in a string?
Regards
Paul
Please note the change of email address!
Paul Grenyer
Email: paul at paulgrenyer.co.uk
Web: www.paulgrenyer.co.uk
More information about the Cplusplus-sig
mailing list