TAO  2.3.3
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | List of all members
CORBA::Exception Class Referenceabstract

Exception. More...

#include <Exception.h>

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

Public Member Functions

 Exception (const Exception &src)
 Copy constructor. More...
 
virtual ~Exception (void)
 Destructor. More...
 
virtual void _raise (void) const =0
 
virtual const char * _rep_id (void) const
 Return the repository ID of the Exception. More...
 
virtual const char * _name (void) const
 Return the name of the Exception. More...
 
virtual CORBA::TypeCode_ptr _tao_type (void) const =0
 Will be overridden in the concrete derived classes. More...
 
void _tao_print_exception (const char *info, FILE *f=stdout) const
 Print the exception to output determined by f. More...
 
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. More...
 

Static Public Member Functions

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

Protected Member Functions

 Exception (void)
 Default constructor. More...
 
Exceptionoperator= (const Exception &src)
 Assignment operator. More...
 
 Exception (const char *repository_id, const char *local_name)
 Construct from a repository id. More...
 

Private Attributes

CORBA::String_var id_
 Repository Id. More...
 
CORBA::String_var name_
 Local name. More...
 

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.

Constructor & Destructor Documentation

CORBA::Exception::Exception ( const Exception src)

Copy constructor.

Note
This constructor should be protected, but VC7.1 at warning level 4 complains about the inaccessible copy constructor preventing it from being caught. However, that probably isn't true for most cases since CORBA exceptions are typically caught by reference, not by copy.
CORBA::Exception::~Exception ( void  )
virtual

Destructor.

CORBA::Exception::Exception ( void  )
protected

Default constructor.

CORBA::Exception::Exception ( const char *  repository_id,
const char *  local_name 
)
protected

Construct from a repository id.

Member Function Documentation

CORBA::Exception * CORBA::Exception::_downcast ( CORBA::Exception x)
static
CORBA::Exception const * CORBA::Exception::_downcast ( CORBA::Exception const *  x)
static
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.

virtual void CORBA::Exception::_raise ( void  ) const
pure virtual
const char * CORBA::Exception::_rep_id ( void  ) const
virtual

Return the repository ID of the Exception.

void CORBA::Exception::_tao_any_destructor ( void *  x)
static

Used in the non-copying Any insertion operator.

virtual void CORBA::Exception::_tao_decode ( TAO_InputCDR cdr)
pure virtual
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::SystemException, and CORBA::WrongTransaction.

virtual void CORBA::Exception::_tao_encode ( TAO_OutputCDR cdr) const
pure virtual
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.
virtual CORBA::TypeCode_ptr CORBA::Exception::_tao_type ( void  ) const
pure virtual

Will be overridden in the concrete derived classes.

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

CORBA::Exception & CORBA::Exception::operator= ( const Exception src)
protected

Assignment operator.

Member Data Documentation

CORBA::String_var CORBA::Exception::id_
private

Repository Id.

CORBA::String_var CORBA::Exception::name_
private

Local name.


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