|
Gaudi Framework, version v22r2 |
| Home | Generated: Tue May 10 2011 |
The most simple guard - it execute the certain code withing typical "try {} catch" clause, used in Auditor, Algorithm, AlgTool, etc. More...
#include <GaudiKernel/Guards.h>

Public Member Functions | |
| template<class OBJECT , class FUNCTION > | |
| ExceptionGuard (OBJECT obj, FUNCTION fun, MsgStream &log, IExceptionSvc *svc=0) | |
| ~ExceptionGuard () | |
| destructor | |
| const StatusCode & | code () const |
| the result of function evaluation | |
| operator const StatusCode & () const | |
| cast operator, useful for the implicit conversions | |
Protected Member Functions | |
| void | handle (const GaudiException &e, MsgStream &s) |
| local handler of GaudiException | |
| void | handle (const std::exception &e, MsgStream &s) |
| local handler of std::exception | |
| void | handle (MsgStream &s) |
| local handler of UNKNOWN exceptions | |
Private Member Functions | |
| ExceptionGuard () | |
| default constructor is disabled | |
| ExceptionGuard (const ExceptionGuard &) | |
| no copy | |
| ExceptionGuard & | operator= (const ExceptionGuard &) |
| no assignement | |
Private Attributes | |
| StatusCode | m_sc |
| status code : result of function evaluation | |
The most simple guard - it execute the certain code withing typical "try {} catch" clause, used in Auditor, Algorithm, AlgTool, etc.
. classes
The usage is fairly trivial:
// get the stream: MsgStream& log = ... ; // create the guard object and execute this->initialize() // within the standard "try"-clause: Gaudi::Guards::Guard guard ( this , std::mem_fun(&IAuditor::initialize) , log ) ; // extract the status code" StatusCode sc = guard.code() ;
The utility could be reused for member-function, regular functions, etc.. It could be easily combined with STL-idioms Essentially it required only the semantical validity of the expression "StatusCode sc = fun(obj)"
Definition at line 108 of file Guards.h.
| Gaudi::Guards::ExceptionGuard::ExceptionGuard | ( | OBJECT | obj, |
| FUNCTION | fun, | ||
| MsgStream & | log, | ||
| IExceptionSvc * | svc = 0 |
||
| ) | [inline] |
< execute the functor
Definition at line 118 of file Guards.h.
: m_sc ( StatusCode::FAILURE ) { try { // execute the functor: m_sc = fun ( obj ) ; // in the case of error try use Exception Service if ( 0 != svc && m_sc.isFailure() ) { m_sc = svc->handleErr ( *obj , m_sc ) ; } } catch ( const GaudiException& e ) { // Use the local handler and then (if possible) the Exception Service handle ( e , log ) ; if ( 0 != svc ) { m_sc = svc -> handle ( *obj , e ) ; } } catch ( const std::exception& e ) { // Use the local handler and then (if possible) the Exception Service handle ( e , log ) ; if ( 0 != svc ) { m_sc = svc -> handle ( *obj , e ) ; } } catch ( ... ) { // Use the local handler and then (if possible) the Exception Service handle ( log ) ; if ( 0 != svc ) { m_sc = svc -> handle ( *obj ) ; } } }
| Gaudi::Guards::ExceptionGuard::~ExceptionGuard | ( | ) |
| Gaudi::Guards::ExceptionGuard::ExceptionGuard | ( | ) | [private] |
default constructor is disabled
| Gaudi::Guards::ExceptionGuard::ExceptionGuard | ( | const ExceptionGuard & | ) | [private] |
no copy
| const StatusCode& Gaudi::Guards::ExceptionGuard::code | ( | ) | const [inline] |
| void Gaudi::Guards::ExceptionGuard::handle | ( | const GaudiException & | e, |
| MsgStream & | s | ||
| ) | [protected] |
local handler of GaudiException
Definition at line 26 of file Guards.cpp.
{
// the general printout
log << MSG::FATAL
<< System::typeinfoName( typeid ( exc ) )
<< "('" << exc.tag() << "') is caught!" << endmsg ;
// print the detailes about the exception:
log << MSG::ERROR << exc << endmsg ;
// get the status code form the exception:
m_sc = exc.code() ;
}
| void Gaudi::Guards::ExceptionGuard::handle | ( | const std::exception & | e, |
| MsgStream & | s | ||
| ) | [protected] |
local handler of std::exception
Definition at line 41 of file Guards.cpp.
{
// the general printout
log << MSG::FATAL
<< System::typeinfoName( typeid ( exc ) ) << " is caught!" << endmsg ;
// print the detailes abotu the exception:
log << MSG::ERROR << exc.what() << endmsg ;
}
| void Gaudi::Guards::ExceptionGuard::handle | ( | MsgStream & | s ) | [protected] |
local handler of UNKNOWN exceptions
Definition at line 53 of file Guards.cpp.
{
// the general printout
log << MSG::FATAL << "UNKNOWN exception is caught!" << endmsg ;
}
| Gaudi::Guards::ExceptionGuard::operator const StatusCode & | ( | ) | const [inline] |
| ExceptionGuard& Gaudi::Guards::ExceptionGuard::operator= | ( | const ExceptionGuard & | ) | [private] |
no assignement
StatusCode Gaudi::Guards::ExceptionGuard::m_sc [private] |