00001 #ifndef Exceptions_h 00002 #define Exceptions_h 1 00003 00004 #include "lcio.h" 00005 #include "Processor.h" 00006 00007 // define some exceptions for Marlin 00008 00009 namespace marlin{ 00010 00016 class ParseException : public lcio::Exception{ 00017 00018 protected: 00019 ParseException() { /*no_op*/ ; } 00020 public: 00021 virtual ~ParseException() throw() { /*no_op*/; } 00022 00023 ParseException( std::string text ){ 00024 message = "marlin::ParseException: " + text ; 00025 } 00026 }; 00027 00028 // class Processor ; 00029 00034 class SkipEventException : public lcio::Exception{ 00035 00036 protected: 00037 SkipEventException() { /*no_op*/ ; } 00038 00039 public: 00040 SkipEventException(Processor* proc){ 00041 message = proc->name() ; 00042 } 00043 virtual ~SkipEventException() throw() { /*no_op*/; } 00044 00045 }; 00046 00052 class StopProcessingException : public lcio::Exception{ 00053 00054 protected: 00055 StopProcessingException() { /*no_op*/ ; } 00056 00057 public: 00058 StopProcessingException(Processor* proc){ 00059 message = proc->name() ; 00060 } 00061 virtual ~StopProcessingException() throw() { /*no_op*/; } 00062 00063 }; 00064 00070 class RewindDataFilesException : public lcio::Exception{ 00071 00072 protected: 00073 RewindDataFilesException() { /*no_op*/ ; } 00074 00075 public: 00076 RewindDataFilesException(Processor* proc){ 00077 message = proc->name() ; 00078 } 00079 virtual ~RewindDataFilesException() throw() { /*no_op*/; } 00080 00081 }; 00082 00083 00084 00085 } // end namespace 00086 00087 #endif 00088 00089 00090