Open CASCADE Technology  7.4.0
Macros

Standard_DefineException.hxx File Reference

#include <Standard_Type.hxx>

Macros

#define DEFINE_STANDARD_EXCEPTION(C1, C2)
 Defines an exception class C1 that inherits an exception class C2. More...
 
#define IMPLEMENT_STANDARD_EXCEPTION(C1)
 Obsolete macro, kept for compatibility with old code. More...
 

Macro Definition Documentation

◆ DEFINE_STANDARD_EXCEPTION

#define DEFINE_STANDARD_EXCEPTION (   C1,
  C2 
)
Value:
\
class C1 : public C2 { \
void Throw () const Standard_OVERRIDE { throw *this; } \
public: \
C1() : C2() {} \
C1(const Standard_CString theMessage) : C2(theMessage) {} \
static void Raise(const Standard_CString theMessage = "") { \
Handle(C1) _E = new C1; \
_E->Reraise(theMessage); \
} \
static void Raise(Standard_SStream& theMessage) { \
Handle(C1) _E = new C1; \
_E->Reraise (theMessage); \
} \
static Handle(C1) NewInstance(const Standard_CString theMessage = "") { return new C1(theMessage); } \
DEFINE_STANDARD_RTTI_INLINE(C1,C2) \
};
#define Handle(Class)
Define Handle() macro.
Definition: Standard_Handle.hxx:407
const Standard_Character * Standard_CString
Definition: Standard_TypeDef.hxx:95
#define Standard_OVERRIDE
Should be used in declarations of virtual methods overriden in the derived classes, to cause compilation error in the case if that virtual function disappears or changes its signature in the base class.
Definition: Standard_Macro.hxx:37
std::stringstream Standard_SStream
Defines Standard_SStream as typedef to C++ string stream.
Definition: Standard_SStream.hxx:22

Defines an exception class C1 that inherits an exception class C2.

C2 must be Standard_Failure or its ancestor. The macro defines empty constructor, copy constructor and static methods Raise() and NewInstance(). Since Standard_Failure implements class manipulated by handle, DEFINE_STANDARD_RTTI macro is also added to enable RTTI.

When using DEFINE_STANDARD_EXCEPTION in your code make sure you also insert a macro DEFINE_STANDARD_HANDLE(C1,C2) before it.

◆ IMPLEMENT_STANDARD_EXCEPTION

#define IMPLEMENT_STANDARD_EXCEPTION (   C1)

Obsolete macro, kept for compatibility with old code.