00001 #include "FWCore/MessageLogger/interface/ExceptionMessages.h" 00002 #include "FWCore/MessageLogger/interface/JobReport.h" 00003 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00004 #include "FWCore/Utilities/interface/Exception.h" 00005 #include <string> 00006 #include <sstream> 00007 00008 namespace edm { 00009 void 00010 printCmsException(cms::Exception& e, char const* prog, edm::JobReport * jobRep, int rc) try { 00011 std::string programName(prog ? prog : "program"); 00012 std::string shortDesc("CMSException"); 00013 std::ostringstream longDesc; 00014 longDesc << "cms::Exception caught in " 00015 << programName 00016 << "\n" 00017 << e.explainSelf(); 00018 edm::LogSystem(shortDesc) << longDesc.str() << "\n"; 00019 if(jobRep) jobRep->reportError(shortDesc, longDesc.str(), rc); 00020 } catch(...) { 00021 } 00022 00023 void printBadAllocException(char const *prog, edm::JobReport * jobRep, int rc) try { 00024 std::string programName(prog ? prog : "program"); 00025 std::string shortDesc("std::bad_allocException"); 00026 std::ostringstream longDesc; 00027 longDesc << "std::bad_alloc exception caught in " 00028 << programName 00029 << "\n" 00030 << "The job has probably exhausted the virtual memory available to the process.\n"; 00031 edm::LogSystem(shortDesc) << longDesc.str() << "\n"; 00032 if(jobRep) jobRep->reportError(shortDesc, longDesc.str(), rc); 00033 } catch(...) { 00034 } 00035 00036 void printStdException(std::exception& e, char const*prog, edm::JobReport * jobRep, int rc) try { 00037 std::string programName(prog ? prog : "program"); 00038 std::string shortDesc("StdLibException"); 00039 std::ostringstream longDesc; 00040 longDesc << "Standard library exception caught in " 00041 << programName 00042 << "\n" 00043 << e.what(); 00044 edm::LogSystem(shortDesc) << longDesc.str() << "\n"; 00045 if (jobRep) jobRep->reportError(shortDesc, longDesc.str(), rc); 00046 } catch(...) { 00047 } 00048 00049 void printUnknownException(char const *prog, edm::JobReport * jobRep, int rc) try { 00050 std::string programName(prog ? prog : "program"); 00051 std::string shortDesc("UnknownException"); 00052 std::ostringstream longDesc; 00053 longDesc << "Unknown exception caught in " 00054 << programName 00055 << "\n"; 00056 edm::LogSystem(shortDesc) << longDesc.str() << "\n"; 00057 if (jobRep) jobRep->reportError(shortDesc, longDesc.str(), rc); 00058 } catch(...) { 00059 } 00060 }