Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v31r0 (aeb156f0)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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::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)
std::string m_backTrace
status code for exception
StatusCode m_code
exception tag
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.

23  : m_message( std::move( Message ) )
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
virtual GaudiException * clone() const
clone operation
T move(T...args)
StatusCode m_code
exception tag
std::unique_ptr< GaudiException > m_previous
stack trace at instantiation
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:309
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)
std::string m_backTrace
status code for exception
StatusCode m_code
exception tag
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 const std::string & message() const
error message to be printed
virtual const std::string & backTrace() const
return the stack trace at instantiation
static bool s_proc
"previous" element in the linked list
std::string m_tag
error message
virtual const StatusCode & code() const
StatusCode for Exception.
std::string m_message
virtual GaudiException * previous() const
get the previous exception ( "previous" element in the linked list)
virtual GaudiException * clone() const
clone operation
virtual const std::string & tag() const
name tag for the exception, or exception type
STL class.
std::string m_backTrace
status code for exception
StatusCode m_code
exception tag
std::unique_ptr< GaudiException > m_previous
stack trace at instantiation
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
const StatusCode & setChecked(bool checked=true) const
Check/uncheck StatusCode.
Definition: StatusCode.h:143
StatusCode m_code
exception tag

Member Function Documentation

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
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)
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
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
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 const std::string & message() const
error message to be printed
virtual const std::string & backTrace() const
return the stack trace at instantiation
std::string m_tag
error message
virtual const StatusCode & code() const
StatusCode for Exception.
std::string m_message
virtual GaudiException * previous() const
get the previous exception ( "previous" element in the linked list)
virtual GaudiException * clone() const
clone operation
virtual const std::string & tag() const
name tag for the exception, or exception type
T reset(T...args)
std::string m_backTrace
status code for exception
StatusCode m_code
exception tag
std::unique_ptr< GaudiException > m_previous
stack trace at instantiation
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
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 const std::string & message() const
error message to be printed
virtual const std::string & backTrace() const
return the stack trace at instantiation
T endl(T...args)
virtual const StatusCode & code() const
StatusCode for Exception.
virtual GaudiException * previous() const
get the previous exception ( "previous" element in the linked list)
virtual std::ostream & printOut(std::ostream &os=std::cerr) const
methods for overloaded printout to std::ostream& and MsgStream&
virtual const std::string & tag() const
name tag for the exception, or exception type
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 const std::string & message() const
error message to be printed
virtual const std::string & backTrace() const
return the stack trace at instantiation
virtual const StatusCode & code() const
StatusCode for Exception.
virtual GaudiException * previous() const
get the previous exception ( "previous" element in the linked list)
virtual std::ostream & printOut(std::ostream &os=std::cerr) const
methods for overloaded printout to std::ostream& and MsgStream&
virtual const std::string & tag() const
name tag for the exception, or exception type
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
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
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
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  }
std::string m_tag
error message
virtual const std::string & tag() const
name tag for the exception, or exception type
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
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

friend class StatusCode
friend

Definition at line 22 of file GaudiException.h.

Member Data Documentation

std::string GaudiException::m_backTrace
protected

status code for exception

Definition at line 106 of file GaudiException.h.

StatusCode GaudiException::m_code
protected

exception tag

Definition at line 105 of file GaudiException.h.

std::string GaudiException::m_message
protected

Definition at line 103 of file GaudiException.h.

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

stack trace at instantiation

Definition at line 107 of file GaudiException.h.

std::string GaudiException::m_tag
protected

error message

Definition at line 104 of file GaudiException.h.

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: