Open CASCADE Technology  7.7.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(Standard_CString theMessage) : C2(theMessage) {} \
C1(Standard_CString theMessage, Standard_CString theStackTrace) \
: C2 (theMessage, theStackTrace) {} \
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(Standard_CString theMessage = "") { return new C1(theMessage); } \
static Handle(C1) NewInstance(Standard_CString theMessage, Standard_CString theStackTrace) { return new C1(theMessage, theStackTrace); } \
DEFINE_STANDARD_RTTI_INLINE(C1,C2) \
};
#define Handle(Class)
Define Handle() macro.
Definition: Standard_Handle.hxx:400
const Standard_Character * Standard_CString
Definition: Standard_TypeDef.hxx:88
#define Standard_OVERRIDE
Should be used in declarations of virtual methods overridden 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:41
std::stringstream Standard_SStream
Defines Standard_SStream as typedef to C++ string stream.
Definition: Standard_SStream.hxx:21

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.