The Gaudi Framework  v32r2 (46d42edc)
GaudiException Class Reference

Define general base for Gaudi exception. More...

#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 21 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 16 of file GaudiException.cpp.

17  : m_message( std::move( Message ) ), m_tag( std::move( Tag ) ), m_code( std::move( Code ) ) {
18  s_proc = true;
19  m_backTrace = captureBacktrace( Code );
20 }
static bool s_proc
"previous" element in the linked list
std::string m_tag
error message
std::string m_message
T move(T... args)
The Message class.
Definition: Message.h:17
std::string m_backTrace
status code for exception
StatusCode m_code
exception tag

◆ 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 22 of file GaudiException.cpp.

24  , m_tag( std::move( Tag ) )
25  , m_code( std::move( Code ) )
26  , m_previous( Exception.clone() ) {
27  // Do not capture backtrace in outer chained exceptions, so only innermost exception is printed
28 }
std::string m_tag
error message
std::string m_message
T move(T... args)
The Message class.
Definition: Message.h:17
virtual GaudiException * clone() const
clone operation
StatusCode m_code
exception tag
std::unique_ptr< GaudiException > m_previous
stack trace at instantiation

◆ 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 30 of file GaudiException.cpp.

31  : m_message( std::move( Message ) ), m_tag( std::move( Tag ) ), m_code( std::move( Code ) ) {
32  s_proc = true;
33  m_message += ": " + System::typeinfoName( typeid( Exception ) ) + ", " + Exception.what();
34  m_backTrace = captureBacktrace( Code );
35 }
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:298
static bool s_proc
"previous" element in the linked list
std::string m_tag
error message
std::string m_message
T what(T... args)
T move(T... args)
The Message class.
Definition: Message.h:17
std::string m_backTrace
status code for exception
StatusCode m_code
exception tag

◆ GaudiException() [4/4]

GaudiException::GaudiException ( const GaudiException Exception)

Copy constructor (deep copying!)

Definition at line 37 of file GaudiException.cpp.

38  : std::exception( Exception )
39  , m_message{Exception.message()}
40  , m_tag{Exception.tag()}
41  , m_code{Exception.code()}
42  , m_backTrace{Exception.backTrace()}
43  , m_previous{Exception.previous() ? Exception.previous()->clone() : nullptr} {
44  s_proc = true;
45 }
virtual GaudiException * previous() const
get the previous exception ( "previous" element in the linked list)
static bool s_proc
"previous" element in the linked list
virtual const std::string & tag() const
name tag for the exception, or exception type
virtual const std::string & message() const
error message to be printed
std::string m_tag
error message
std::string m_message
STL class.
virtual const StatusCode & code() const
StatusCode for Exception.
virtual GaudiException * clone() const
clone operation
std::string m_backTrace
status code for exception
virtual const std::string & backTrace() const
return the stack trace at instantiation
StatusCode m_code
exception tag
std::unique_ptr< GaudiException > m_previous
stack trace at instantiation

◆ ~GaudiException()

GaudiException::~GaudiException ( )
throw (
)
virtual

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

Definition at line 47 of file GaudiException.cpp.

47  {
49  s_proc = false;
50 }
static bool s_proc
"previous" element in the linked list
StatusCode m_code
exception tag
const StatusCode & setChecked(bool checked=true) const
Check/uncheck StatusCode.
Definition: StatusCode.h:143

Member Function Documentation

◆ backTrace()

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

return the stack trace at instantiation

Definition at line 88 of file GaudiException.h.

88 { return m_backTrace; }
std::string m_backTrace
status code for exception

◆ clone()

virtual GaudiException* GaudiException::clone ( ) const
inlinevirtual

clone operation

Reimplemented in UpdateManagerException.

Definition at line 97 of file GaudiException.h.

97 { return new GaudiException( *this ); }
GaudiException(std::string Message, std::string Tag, StatusCode Code)
Constructor (1)

◆ code()

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

StatusCode for Exception.

Definition at line 76 of file GaudiException.h.

76 { return m_code; }
StatusCode m_code
exception tag

◆ message()

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

error message to be printed

Definition at line 58 of file GaudiException.h.

58 { return m_message; }
std::string m_message

◆ operator=()

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

assignment operator

Definition at line 52 of file GaudiException.cpp.

52  {
53  m_message = Exception.message();
54  m_tag = Exception.tag();
55  m_code = Exception.code();
56  m_backTrace = Exception.backTrace();
57  m_previous.reset( Exception.previous() ? Exception.previous()->clone() : nullptr );
58  return *this;
59 }
virtual GaudiException * previous() const
get the previous exception ( "previous" element in the linked list)
virtual const std::string & tag() const
name tag for the exception, or exception type
virtual const std::string & message() const
error message to be printed
std::string m_tag
error message
std::string m_message
T reset(T... args)
virtual const StatusCode & code() const
StatusCode for Exception.
virtual GaudiException * clone() const
clone operation
std::string m_backTrace
status code for exception
virtual const std::string & backTrace() const
return the stack trace at instantiation
StatusCode m_code
exception tag
std::unique_ptr< GaudiException > m_previous
stack trace at instantiation

◆ previous()

virtual GaudiException* GaudiException::previous ( ) const
inlinevirtual

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

Definition at line 85 of file GaudiException.h.

85 { return m_previous.get(); }
T get(T... args)
std::unique_ptr< GaudiException > m_previous
stack trace at instantiation

◆ printOut() [1/2]

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

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

Definition at line 61 of file GaudiException.cpp.

61  {
62  os << tag() << " \t " << message() << "\t StatusCode=" << code();
63  if ( !backTrace().empty() ) os << std::endl << "Exception stack trace\n" << backTrace();
64  return ( 0 != previous() ) ? previous()->printOut( os << std::endl ) : os;
65 }
virtual GaudiException * previous() const
get the previous exception ( "previous" element in the linked list)
T endl(T... args)
virtual const std::string & tag() const
name tag for the exception, or exception type
virtual const std::string & message() const
error message to be printed
virtual const StatusCode & code() const
StatusCode for Exception.
virtual const std::string & backTrace() const
return the stack trace at instantiation
virtual std::ostream & printOut(std::ostream &os=std::cerr) const
methods for overloaded printout to std::ostream& and MsgStream&

◆ printOut() [2/2]

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

Output the exception to the Gaudi MsgStream.

Definition at line 67 of file GaudiException.cpp.

67  {
68  os << tag() << " \t " << message() << "\t StatusCode=" << code();
69  if ( !backTrace().empty() ) os << endmsg << "Exception stack trace\n" << backTrace();
70  return ( 0 != previous() ) ? previous()->printOut( os << endmsg ) : os;
71 }
virtual GaudiException * previous() const
get the previous exception ( "previous" element in the linked list)
virtual const std::string & tag() const
name tag for the exception, or exception type
virtual const std::string & message() const
error message to be printed
virtual const StatusCode & code() const
StatusCode for Exception.
virtual const std::string & backTrace() const
return the stack trace at instantiation
virtual std::ostream & printOut(std::ostream &os=std::cerr) const
methods for overloaded printout to std::ostream& and MsgStream&
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192

◆ setCode()

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

update the status code for the exception

Definition at line 79 of file GaudiException.h.

79  {
80  m_code = newStatus;
81  return code();
82  }
virtual const StatusCode & code() const
StatusCode for Exception.
StatusCode m_code
exception tag

◆ setMessage()

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

update the error message to be printed

Definition at line 61 of file GaudiException.h.

61  {
62  m_message = newMessage;
63  return message();
64  }
virtual const std::string & message() const
error message to be printed
std::string m_message

◆ setTag()

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

update name tag

Definition at line 70 of file GaudiException.h.

70  {
71  m_tag = newTag;
72  return tag();
73  }
virtual const std::string & tag() const
name tag for the exception, or exception type
std::string m_tag
error message

◆ tag()

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

name tag for the exception, or exception type

Definition at line 67 of file GaudiException.h.

67 { return m_tag; }
std::string m_tag
error message

◆ what()

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

method from std::exception

Definition at line 100 of file GaudiException.h.

100 { return message().c_str(); }
virtual const std::string & message() const
error message to be printed
T c_str(T... args)

Friends And Related Function Documentation

◆ StatusCode

friend class StatusCode
friend

Definition at line 22 of file GaudiException.h.

Member Data Documentation

◆ m_backTrace

std::string GaudiException::m_backTrace
protected

status code for exception

Definition at line 106 of file GaudiException.h.

◆ m_code

StatusCode GaudiException::m_code
protected

exception tag

Definition at line 105 of file GaudiException.h.

◆ m_message

std::string GaudiException::m_message
protected

Definition at line 103 of file GaudiException.h.

◆ m_previous

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

stack trace at instantiation

Definition at line 107 of file GaudiException.h.

◆ m_tag

std::string GaudiException::m_tag
protected

error message

Definition at line 104 of file GaudiException.h.

◆ s_proc

bool GaudiException::s_proc
staticprotected

"previous" element in the linked list

Definition at line 108 of file GaudiException.h.


The documentation for this class was generated from the following files: