Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:03:51

0001 #ifndef DataFormats_Common_HandleExceptionFactory_h
0002 #define DataFormats_Common_HandleExceptionFactory_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     DataFormats/Common
0006 // Class  :     HandleExceptionFactory
0007 //
0008 /**\class edm::HandleExceptionFactory HandleExceptionFactory.h "DataFormats/Common/interface/HandleExceptionFactory.h"
0009 
0010  Description: Creates an cms::Exception for an edm::Handle
0011 
0012  Usage:
0013     When a data product is requested which is not available, the
0014  edm::Handle<> will hold an edm::HandleExceptionFactory which is
0015  used to manufacture the exception which will be thrown if the Handle
0016  is dereferenced.
0017  Using a factory over having the cms::Exception already in the Handle
0018  is faster for the case where code calls Handle::isValid before 
0019  dereferencing.
0020 
0021 */
0022 //
0023 // Original Author:  Chris Jones
0024 //         Created:  Wed, 04 Dec 2013 16:47:12 GMT
0025 //
0026 
0027 // system include files
0028 #include <memory>
0029 
0030 // user include files
0031 
0032 // forward declarations
0033 
0034 namespace cms {
0035   class Exception;
0036 }
0037 
0038 namespace edm {
0039 
0040   class HandleExceptionFactory {
0041   public:
0042     HandleExceptionFactory();
0043     virtual ~HandleExceptionFactory();
0044 
0045     // ---------- const member functions ---------------------
0046     virtual std::shared_ptr<cms::Exception> make() const = 0;
0047 
0048   private:
0049     //HandleExceptionFactory(const HandleExceptionFactory&); // stop default
0050 
0051     //const HandleExceptionFactory& operator=(const HandleExceptionFactory&); // stop default
0052 
0053     // ---------- member data --------------------------------
0054   };
0055 }  // namespace edm
0056 
0057 #endif