The Gaudi Framework  master (594c33fa)
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
 

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( 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( 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

◆ 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 116 of file GaudiException.h.

◆ m_code

StatusCode GaudiException::m_code
protected

exception tag

Definition at line 115 of file GaudiException.h.

◆ m_message

std::string GaudiException::m_message
protected

Definition at line 113 of file GaudiException.h.

◆ m_previous

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

stack trace at instantiation

Definition at line 117 of file GaudiException.h.

◆ m_tag

std::string GaudiException::m_tag
protected

error message

Definition at line 114 of file GaudiException.h.

◆ s_proc

bool GaudiException::s_proc
staticprotected

"previous" element in the linked list

Definition at line 118 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:118
std::move
T move(T... args)
GaudiException::m_previous
std::unique_ptr< GaudiException > m_previous
stack trace at instantiation
Definition: GaudiException.h:117
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:313
std::unique_ptr::reset
T reset(T... args)
GaudiException::m_message
std::string m_message
Definition: GaudiException.h:113
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:203
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:116
GaudiException::m_tag
std::string m_tag
error message
Definition: GaudiException.h:114
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:115