CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/FWCore/PythonParameterSet/src/PythonWrapper.cc

Go to the documentation of this file.
00001 #include "FWCore/PythonParameterSet/src/PythonWrapper.h"
00002 #include "FWCore/Utilities/interface/Exception.h"
00003 //#include <iostream>
00004 namespace edm {
00005 
00006 void pythonToCppException(const std::string& iType)
00007  {
00008   using namespace boost::python;
00009   PyObject *exc=NULL, *val=NULL, *trace=NULL;
00010   PyErr_Fetch(&exc,&val,&trace);
00011   PyErr_NormalizeException(&exc,&val,&trace);
00012   handle<> hExc(allow_null(exc));
00013   handle<> hVal(allow_null(val));
00014   handle<> hTrace(allow_null(trace));
00015  
00016   if(hTrace) {
00017     object oTrace(hTrace);
00018     handle<> hStringTr(PyObject_Str(oTrace.ptr()));
00019     object stringTr(hStringTr);
00020 //std::cout << "PR TR " << stringTr <<  " DONE "<<  std::endl;
00021   }
00022 
00023   if(hVal && hExc) {
00024     object oExc(hExc);
00025     object oVal(hVal);
00026     handle<> hStringVal(PyObject_Str(oVal.ptr()));
00027     object stringVal( hStringVal );
00028 
00029     handle<> hStringExc(PyObject_Str(oExc.ptr()));
00030     object stringExc( hStringExc);
00031 
00032     //PyErr_Print();
00033     throw cms::Exception(iType) <<"python encountered the error: "
00034                                 << PyString_AsString(stringExc.ptr())<<" "
00035                                 << PyString_AsString(stringVal.ptr())<<"\n";
00036   } else {
00037     throw cms::Exception(iType)<<" unknown python problem occurred.\n";
00038   }
00039 }
00040 
00041 }
00042 
00043