SALOME documentation central
src/Utils/Utils_CorbaException.hxx
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _UTILS_CORBAEXCEPTION_HXX_
00029 #define _UTILS_CORBAEXCEPTION_HXX_
00030
00031 #include "SALOME_Utils.hxx"
00032
00033 #include <SALOMEconfig.h>
00034 #include CORBA_SERVER_HEADER(SALOME_Exception)
00035
00039 # define THROW_SALOME_CORBA_EXCEPTION(chain, typex) \
00040 {\
00041 SALOME::ExceptionStruct ExDescription; \
00042 ExDescription.text = CORBA::string_dup(chain); \
00043 ExDescription.type = typex; \
00044 ExDescription.sourceFile = CORBA::string_dup(__FILE__); \
00045 ExDescription.lineNumber = __LINE__; \
00046 throw SALOME::SALOME_Exception(ExDescription); \
00047 }
00048
00049 #include <ostream>
00050
00051
00052 inline std::ostream& operator<<(std::ostream& os, const CORBA::Exception& e)
00053 {
00054 CORBA::Any tmp;
00055 tmp<<= e;
00056 CORBA::TypeCode_var tc = tmp.type();
00057 const char *p = tc->name();
00058 os<<"CORBA Exception was catch of the kind : ";
00059 if ( *p != '\0' ) {
00060 os<<p;
00061 }
00062 else {
00063 os << tc->id();
00064 }
00065
00066 return os;
00067 }
00068
00069 #endif
Copyright © 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS