Go to the documentation of this file.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 }