CORBA::Exception Class Reference

Exception. More...

#include <Exception.h>

Inheritance diagram for CORBA::Exception:

Inheritance graph
[legend]
Collaboration diagram for CORBA::Exception:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual ~Exception (void)
 Destructor.

 Exception (const Exception &src)
 Copy constructor.

virtual void _raise (void) const=0
virtual const char * _rep_id (void) const
 Return the repository ID of the Exception.

virtual const char * _name (void) const
 Return the name of the Exception.

virtual CORBA::TypeCode_ptr _tao_type (void) const=0
 Will be overridden in the concrete derived classes.

void _tao_print_exception (const char *info, FILE *f=stdout) const
 Print the exception to output determined by f.

virtual ACE_CString _info (void) const=0
virtual void _tao_encode (TAO_OutputCDR &cdr) const=0
virtual void _tao_decode (TAO_InputCDR &cdr)=0
virtual CORBA::Exception_tao_duplicate (void) const=0
 Deep copy.


Static Public Member Functions

Exception_downcast (Exception *x)
Exception const * _downcast (Exception const *x)
void _tao_any_destructor (void *)
 Used in the non-copying Any insertion operator.


Protected Member Functions

 Exception (void)
 Default constructor.

Exceptionoperator= (const Exception &src)
 Assignment operator.

 Exception (const char *repository_id, const char *local_name)
 Construct from a respository id.


Private Attributes

CORBA::String_var id_
 Repository Id.

CORBA::String_var name_
 Local name.


Detailed Description

Exception.

CORBA2-specified exception hierarchy. All exceptions have a type (represented by a TypeCode) and a widely scoped type ID (in the TypeCode) that are generated by any OMG-IDL compiler and available through the Interface Repository. Think of it as a "globally scoped" name distinguishing each exception.

Todo:
According to the OMG CORBA C++ Mapping version 1.1, the copy constructors should be moved to "protected" section in class declarations. Since the current MS Visual C++ 7.1 compiler will cause some problems to TAO's exception mechanism, we defer doing this until we drop support for MSVC++ 7.1. Maybe there is another solution, have to test that later.

Definition at line 109 of file Exception.h.


Constructor & Destructor Documentation

CORBA::Exception::~Exception void   )  [virtual]
 

Destructor.

Definition at line 62 of file Exception.cpp.

00063 {
00064 }

CORBA::Exception::Exception const Exception src  ) 
 

Copy constructor.

Definition at line 45 of file Exception.cpp.

References ACE_ASSERT, TAO::String_var< charT >::in(), and CORBA::string_dup().

00046   : id_ (CORBA::string_dup (src.id_)),
00047     name_ (CORBA::string_dup (src.name_))
00048 {
00049   ACE_ASSERT (this->id_.in () != 0 && this->name_.in () != 0);
00050 }

CORBA::Exception::Exception void   )  [protected]
 

Default constructor.

Definition at line 56 of file Exception.cpp.

00057   : id_ (),
00058     name_ ()
00059 {
00060 }

TAO_BEGIN_VERSIONED_NAMESPACE_DECL CORBA::Exception::Exception const char *  repository_id,
const char *  local_name
[protected]
 

Construct from a respository id.

Definition at line 37 of file Exception.cpp.

References ACE_ASSERT, TAO::String_var< charT >::in(), and CORBA::string_dup().

00039   : id_ (CORBA::string_dup (repository_id)),
00040     name_ (CORBA::string_dup (local_name))
00041 {
00042   ACE_ASSERT (this->id_.in () != 0 && this->name_.in () != 0);
00043 }


Member Function Documentation

ACE_INLINE CORBA::Exception const * CORBA::Exception::_downcast Exception const *  x  )  [static]
 

Reimplemented in CORBA::PolicyError, CORBA::InvalidPolicies, CORBA::SystemException, CORBA::UserException, and CORBA::WrongTransaction.

Definition at line 14 of file Exception.i.

00015 {
00016   return x;
00017 }

TAO_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE CORBA::Exception * CORBA::Exception::_downcast Exception x  )  [static]
 

Reimplemented in CORBA::ORB::InvalidName, CORBA::PolicyError, CORBA::InvalidPolicies, CORBA::SystemException, CORBA::UserException, and CORBA::WrongTransaction.

Definition at line 8 of file Exception.i.

00009 {
00010   return x;
00011 }

virtual ACE_CString CORBA::Exception::_info void   )  const [pure virtual]
 

Returns a string containing information about the exception. This function is not CORBA compliant.

Implemented in CORBA::SystemException, and CORBA::UserException.

const char * CORBA::Exception::_name void   )  const [virtual]
 

Return the name of the Exception.

Definition at line 85 of file Exception.cpp.

References TAO::String_var< charT >::in().

Referenced by CORBA::operator<<().

00086 {
00087   return this->name_.in ();
00088 }

virtual void CORBA::Exception::_raise void   )  const [pure virtual]
 

Implemented in CORBA::ORB::InvalidName, CORBA::PolicyError, CORBA::InvalidPolicies, CORBA::SystemException, CORBA::UserException, and CORBA::WrongTransaction.

Referenced by TAO::Synch_Twoway_Invocation::handle_user_exception().

const char * CORBA::Exception::_rep_id void   )  const [virtual]
 

Return the repository ID of the Exception.

Definition at line 79 of file Exception.cpp.

References TAO::String_var< charT >::in().

Referenced by CORBA::UserException::_info(), CORBA::SystemException::_info(), CORBA::Environment::exception_id(), CORBA::Environment::exception_type(), operator<<(), CORBA::operator<<(), and CORBA::Environment::print_exception().

00080 {
00081   return this->id_.in ();
00082 }

void CORBA::Exception::_tao_any_destructor void *   )  [static]
 

Used in the non-copying Any insertion operator.

Reimplemented in CORBA::PolicyError, CORBA::InvalidPolicies, and CORBA::WrongTransaction.

Definition at line 114 of file Exception.cpp.

00115 {
00116   CORBA::Exception *tmp = static_cast<CORBA::Exception *> (x);
00117   delete tmp;
00118 }

virtual void CORBA::Exception::_tao_decode TAO_InputCDR cdr  )  [pure virtual]
 

Implemented in CORBA::ORB::InvalidName, CORBA::PolicyError, CORBA::InvalidPolicies, CORBA::SystemException, and CORBA::WrongTransaction.

Referenced by TAO::Synch_Twoway_Invocation::handle_user_exception().

virtual CORBA::Exception* CORBA::Exception::_tao_duplicate void   )  const [pure virtual]
 

Deep copy.

The following operation is used in the implementation of it performs a deep copy of the exception, normally it is implemented as:

class SomeException : public // Derives from CORBA::Exception { public: virtual CORBA::Exception *_tao_duplicate (void) const { CORBA::Exception *result = 0; ACE_NEW_RETURN ( result, SomeException (*this), 0 ); return result; } };

Implemented in CORBA::ORB::InvalidName, CORBA::PolicyError, CORBA::InvalidPolicies, CORBA::SystemException, and CORBA::WrongTransaction.

Referenced by CORBA::Environment::Environment().

virtual void CORBA::Exception::_tao_encode TAO_OutputCDR cdr  )  const [pure virtual]
 

Implemented in CORBA::ORB::InvalidName, CORBA::PolicyError, CORBA::InvalidPolicies, CORBA::SystemException, and CORBA::WrongTransaction.

Referenced by TAO_GIOP_Message_Lite::generate_exception_reply(), TAO_GIOP_Message_Base::generate_exception_reply(), and TAO_GIOP_Message_Lite::send_reply_exception().

void CORBA::Exception::_tao_print_exception const char *  info,
FILE *  f = stdout
const
 

Print the exception to output determined by f.

Note:
This method is TAO-specific.

Definition at line 91 of file Exception.cpp.

References ACE_DEBUG, ACE_TEXT, ACE_TEXT_CHAR_TO_TCHAR, and LM_ERROR.

00093 {
00094   ACE_DEBUG ((LM_ERROR,
00095               ACE_TEXT ("(%P|%t) EXCEPTION, %s\n")
00096               ACE_TEXT ("%s\n"),
00097               ACE_TEXT_CHAR_TO_TCHAR (user_provided_info),
00098               ACE_TEXT_CHAR_TO_TCHAR (this->_info ().c_str ())));
00099 }

virtual CORBA::TypeCode_ptr CORBA::Exception::_tao_type void   )  const [pure virtual]
 

Will be overridden in the concrete derived classes.

Implemented in CORBA::PolicyError, CORBA::InvalidPolicies, CORBA::UserException, and CORBA::WrongTransaction.

CORBA::Exception & CORBA::Exception::operator= const Exception src  )  [protected]
 

Assignment operator.

Definition at line 67 of file Exception.cpp.

References ACE_ASSERT, id_, name_, and CORBA::string_dup().

00068 {
00069   this->id_ = CORBA::string_dup (src.id_);
00070   ACE_ASSERT (this->id_.in () != 0);
00071 
00072   this->name_ = CORBA::string_dup (src.name_);
00073   ACE_ASSERT (this->name_.in () != 0);
00074 
00075   return *this;
00076 }


Member Data Documentation

CORBA::String_var CORBA::Exception::id_ [private]
 

Repository Id.

Definition at line 205 of file Exception.h.

Referenced by operator=().

CORBA::String_var CORBA::Exception::name_ [private]
 

Local name.

Definition at line 208 of file Exception.h.

Referenced by operator=().


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 12:24:47 2006 for TAO by doxygen 1.3.6