#include "python_utils.hpp" std::string extractException() { using namespace boost::python; PyObject *exc,*val,*tb; PyErr_Fetch(&exc,&val,&tb); PyErr_NormalizeException(&exc,&val,&tb); handle<> hexc(exc),hval(allow_null(val)),htb(allow_null(tb)); if(!hval) { return extract(str(hexc)); } else { object traceback(import("traceback")); object format_exception(traceback.attr("format_exception")); object formatted_list(format_exception(hexc,hval,htb)); object formatted(str("").join(formatted_list)); return extract(formatted); } }