The Gaudi Framework  master (37c0b60a)
GaudiException Class Reference

#include <GaudiKernel/GaudiException.h>

Inheritance diagram for GaudiException:
Collaboration diagram for GaudiException:

Public Member Functions

 GaudiException (std::string Message, std::string Tag, StatusCode Code)
 Constructor (1) More...
 
 GaudiException (std::string Message, std::string Tag, StatusCode Code, const GaudiException &Exception)
 Constructor (2) More...
 
 GaudiException (std::string Message, std::string Tag, StatusCode Code, const std::exception &Exception)
 Constructor (3) More...
 
 GaudiException (const GaudiException &Exception)
 Copy constructor (deep copying!) More...
 
virtual ~GaudiException () throw ()
 destructor (perform the deletion of "previous" field!) More...
 
GaudiExceptionoperator= (const GaudiException &Exception)
 assignment operator More...
 
virtual const std::stringmessage () const
 error message to be printed More...
 
virtual const std::stringsetMessage (const std::string &newMessage)
 update the error message to be printed More...
 
virtual const std::stringtag () const
 name tag for the exception, or exception type More...
 
virtual const std::stringsetTag (const std::string &newTag)
 update name tag More...
 
virtual const StatusCodecode () const
 StatusCode for Exception. More...
 
virtual const StatusCodesetCode (const StatusCode &newStatus)
 update the status code for the exception More...
 
virtual GaudiExceptionprevious () const
 get the previous exception ( "previous" element in the linked list) More...
 
virtual const std::stringbackTrace () const
 return the stack trace at instantiation More...
 
virtual std::ostreamprintOut (std::ostream &os=std::cerr) const
 methods for overloaded printout to std::ostream& and MsgStream& More...
 
virtual MsgStreamprintOut (MsgStream &os) const
 Output the exception to the Gaudi MsgStream. More...
 
virtual GaudiExceptionclone () const
 clone operation More...
 
const char * what () const override throw ()
 method from std::exception More...
 
- Public Member Functions inherited from std::exception
what (T... args)
 
~exception (T... args)
 
operator= (T... args)
 
exception (T... args)
 

Protected Attributes

std::string m_message
 
std::string m_tag
 error message More...
 
StatusCode m_code
 exception tag More...
 
std::string m_backTrace
 status code for exception More...
 
std::unique_ptr< GaudiExceptionm_previous
 stack trace at instantiation More...
 

Static Protected Attributes

static bool s_proc
 "previous" element in the linked list More...
 

Friends

class StatusCode
 
std::ostreamoperator<< (std::ostream &os, const GaudiException &ge)
 overloaded printout to std::ostream More...
 
std::ostreamoperator<< (std::ostream &os, const GaudiException *pge)
 overloaded printout to std::ostream More...
 
MsgStreamoperator<< (MsgStream &os, const GaudiException &ge)
 overloaded printout to MsgStream More...
 
MsgStreamoperator<< (MsgStream &os, const GaudiException *pge)
 overloaded printout to MsgStream More...
 

Detailed Description

Define general base for Gaudi exception

Author
Vanya Belyaev
Sebastien Ponce

Definition at line 31 of file GaudiException.h.

Constructor & Destructor Documentation

◆ GaudiException() [1/4]

GaudiException::GaudiException ( std::string  Message,
std::string  Tag,
StatusCode  Code 
)

Constructor (1)

Parameters
Messageerror message
Tag"name tag", or exeption type
Codestatus code

Definition at line 26 of file GaudiException.cpp.

27  : m_message( std::move( Message ) ), m_tag( std::move( Tag ) ), m_code( std::move( Code ) ) {
28  s_proc = true;
29  m_backTrace = captureBacktrace( m_code );
30 }

◆ GaudiException() [2/4]

GaudiException::GaudiException ( std::string  Message,
std::string  Tag,
StatusCode  Code,
const GaudiException Exception 
)

Constructor (2)

Parameters
Messageerror message
Tag"name tag", or exeption type
Codestatus code
Exception"previous" exception

Definition at line 32 of file GaudiException.cpp.

34  , m_tag( std::move( Tag ) )
35  , m_code( std::move( Code ) )
36  , m_previous( Exception.clone() ) {
37  // Do not capture backtrace in outer chained exceptions, so only innermost exception is printed
38 }

◆ GaudiException() [3/4]

GaudiException::GaudiException ( std::string  Message,
std::string  Tag,
StatusCode  Code,
const std::exception Exception 
)

Constructor (3)

Parameters
Messageerror message
Tag"name tag", or exeption type
Codestatus code
Exception"previous" exception (used to improve the error message)

Definition at line 40 of file GaudiException.cpp.

41  : m_message( std::move( Message ) ), m_tag( std::move( Tag ) ), m_code( std::move( Code ) ) {
42  s_proc = true;
43  m_message += ": " + System::typeinfoName( typeid( Exception ) ) + ", " + Exception.what();
44  m_backTrace = captureBacktrace( m_code );
45 }

◆ GaudiException() [4/4]

GaudiException::GaudiException ( const GaudiException Exception)

Copy constructor (deep copying!)

Definition at line 47 of file GaudiException.cpp.

48  : std::exception( Exception )
49  , m_message{ Exception.message() }
50  , m_tag{ Exception.tag() }
51  , m_code{ Exception.code() }
52  , m_backTrace{ Exception.backTrace() }
53  , m_previous{ Exception.previous() ? Exception.previous()->clone() : nullptr } {
54  s_proc = true;
55 }

◆ ~GaudiException()

GaudiException::~GaudiException ( )
throw (
)
virtual

destructor (perform the deletion of "previous" field!)

Definition at line 57 of file GaudiException.cpp.

57 { s_proc = false; }

Member Function Documentation

◆ backTrace()

virtual const std::string& GaudiException::backTrace ( ) const
inlinevirtual

return the stack trace at instantiation

Definition at line 98 of file GaudiException.h.

98 { return m_backTrace; }

◆ clone()

virtual GaudiException* GaudiException::clone ( ) const
inlinevirtual

clone operation

Reimplemented in UpdateManagerException.

Definition at line 107 of file GaudiException.h.

107 { return new GaudiException( *this ); }

◆ code()

virtual const StatusCode& GaudiException::code ( ) const
inlinevirtual

StatusCode for Exception.

Definition at line 86 of file GaudiException.h.

86 { return m_code; }

◆ message()

virtual const std::string& GaudiException::message ( ) const
inlinevirtual

error message to be printed

Definition at line 68 of file GaudiException.h.

68 { return m_message; }

◆ operator=()

GaudiException & GaudiException::operator= ( const GaudiException Exception)

assignment operator

Definition at line 59 of file GaudiException.cpp.

59  {
60  m_message = Exception.message();
61  m_tag = Exception.tag();
62  m_code = Exception.code();
63  m_backTrace = Exception.backTrace();
64  m_previous.reset( Exception.previous() ? Exception.previous()->clone() : nullptr );
65  return *this;
66 }

◆ previous()

virtual GaudiException* GaudiException::previous ( ) const
inlinevirtual

get the previous exception ( "previous" element in the linked list)

Definition at line 95 of file GaudiException.h.

95 { return m_previous.get(); }

◆ printOut() [1/2]

MsgStream & GaudiException::printOut ( MsgStream os) const
virtual

Output the exception to the Gaudi MsgStream.

Definition at line 74 of file GaudiException.cpp.

74  {
75  os << tag() << " \t " << message() << "\t StatusCode=" << code();
76  if ( !backTrace().empty() ) os << endmsg << "Exception stack trace\n" << backTrace();
77  return ( 0 != previous() ) ? previous()->printOut( os << endmsg ) : os;
78 }

◆ printOut() [2/2]

std::ostream & GaudiException::printOut ( std::ostream os = std::cerr) const
virtual

methods for overloaded printout to std::ostream& and MsgStream&

Definition at line 68 of file GaudiException.cpp.

68  {
69  os << tag() << " \t " << message() << "\t StatusCode=" << code();
70  if ( !backTrace().empty() ) os << std::endl << "Exception stack trace\n" << backTrace();
71  return ( 0 != previous() ) ? previous()->printOut( os << std::endl ) : os;
72 }

◆ setCode()

virtual const StatusCode& GaudiException::setCode ( const StatusCode newStatus)
inlinevirtual

update the status code for the exception

Definition at line 89 of file GaudiException.h.

89  {
90  m_code = newStatus;
91  return code();
92  }

◆ setMessage()

virtual const std::string& GaudiException::setMessage ( const std::string newMessage)
inlinevirtual

update the error message to be printed

Definition at line 71 of file GaudiException.h.

71  {
72  m_message = newMessage;
73  return message();
74  }

◆ setTag()

virtual const std::string& GaudiException::setTag ( const std::string newTag)
inlinevirtual

update name tag

Definition at line 80 of file GaudiException.h.

80  {
81  m_tag = newTag;
82  return tag();
83  }

◆ tag()

virtual const std::string& GaudiException::tag ( ) const
inlinevirtual

name tag for the exception, or exception type

Definition at line 77 of file GaudiException.h.

77 { return m_tag; }

◆ what()

const char* GaudiException::what ( ) const
throw (
)
inlineoverride

method from std::exception

Definition at line 110 of file GaudiException.h.

110 { return message().c_str(); }

Friends And Related Function Documentation

◆ operator<< [1/4]

MsgStream& operator<< ( MsgStream os,
const GaudiException ge 
)
friend

overloaded printout to MsgStream

Definition at line 86 of file GaudiException.cpp.

86 { return ge.printOut( os ); }

◆ operator<< [2/4]

MsgStream& operator<< ( MsgStream os,
const GaudiException pge 
)
friend

overloaded printout to MsgStream

Definition at line 88 of file GaudiException.cpp.

88  {
89  return ( 0 == pge ) ? ( os << " GaudiException* points to NULL!" ) : ( os << *pge );
90 }

◆ operator<< [3/4]

std::ostream& operator<< ( std::ostream os,
const GaudiException ge 
)
friend

overloaded printout to std::ostream

Definition at line 80 of file GaudiException.cpp.

80 { return ge.printOut( os ); }

◆ operator<< [4/4]

std::ostream& operator<< ( std::ostream os,
const GaudiException pge 
)
friend

overloaded printout to std::ostream

Definition at line 82 of file GaudiException.cpp.

82  {
83  return ( 0 == pge ) ? ( os << " GaudiException* points to NULL!" ) : ( os << *pge );
84 }

◆ StatusCode

friend class StatusCode
friend

Definition at line 32 of file GaudiException.h.

Member Data Documentation

◆ m_backTrace

std::string GaudiException::m_backTrace
protected

status code for exception

Definition at line 128 of file GaudiException.h.

◆ m_code

StatusCode GaudiException::m_code
protected

exception tag

Definition at line 127 of file GaudiException.h.

◆ m_message

std::string GaudiException::m_message
protected

Definition at line 125 of file GaudiException.h.

◆ m_previous

std::unique_ptr<GaudiException> GaudiException::m_previous
protected

stack trace at instantiation

Definition at line 129 of file GaudiException.h.

◆ m_tag

std::string GaudiException::m_tag
protected

error message

Definition at line 126 of file GaudiException.h.

◆ s_proc

bool GaudiException::s_proc
staticprotected

"previous" element in the linked list

Definition at line 130 of file GaudiException.h.


The documentation for this class was generated from the following files:
std::exception
STL class.
GaudiException::s_proc
static bool s_proc
"previous" element in the linked list
Definition: GaudiException.h:130
std::move
T move(T... args)
GaudiException::m_previous
std::unique_ptr< GaudiException > m_previous
stack trace at instantiation
Definition: GaudiException.h:129
GaudiException::previous
virtual GaudiException * previous() const
get the previous exception ( "previous" element in the linked list)
Definition: GaudiException.h:95
std::unique_ptr::get
T get(T... args)
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:315
std::unique_ptr::reset
T reset(T... args)
GaudiException::m_message
std::string m_message
Definition: GaudiException.h:125
GaudiException::message
virtual const std::string & message() const
error message to be printed
Definition: GaudiException.h:68
GaudiException::backTrace
virtual const std::string & backTrace() const
return the stack trace at instantiation
Definition: GaudiException.h:98
Message
Definition: Message.h:26
std::string::c_str
T c_str(T... args)
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202
GaudiException::tag
virtual const std::string & tag() const
name tag for the exception, or exception type
Definition: GaudiException.h:77
GaudiException::m_backTrace
std::string m_backTrace
status code for exception
Definition: GaudiException.h:128
GaudiException::m_tag
std::string m_tag
error message
Definition: GaudiException.h:126
GaudiException::code
virtual const StatusCode & code() const
StatusCode for Exception.
Definition: GaudiException.h:86
std::endl
T endl(T... args)
GaudiException::printOut
virtual std::ostream & printOut(std::ostream &os=std::cerr) const
methods for overloaded printout to std::ostream& and MsgStream&
Definition: GaudiException.cpp:68
GaudiException::GaudiException
GaudiException(std::string Message, std::string Tag, StatusCode Code)
Constructor (1)
Definition: GaudiException.cpp:26
Gaudi::Details::Property::ParsingErrorPolicy::Exception
@ Exception
GaudiException::m_code
StatusCode m_code
exception tag
Definition: GaudiException.h:127