00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _DECAF_LANG_EXCEPTIONS_EXCEPTIONDEFINES_H_
00019 #define _DECAF_LANG_EXCEPTIONS_EXCEPTIONDEFINES_H_
00020
00027 #define DECAF_CATCH_RETHROW( type ) \
00028 catch( type& ex ){ \
00029 ex.setMark( __FILE__, __LINE__ ); \
00030 throw; \
00031 }
00032
00039 #define DECAF_CATCH_EXCEPTION_CONVERT( sourceType, targetType ) \
00040 catch( sourceType& ex ){ \
00041 targetType target( ex.clone() ); \
00042 target.setMark( __FILE__, __LINE__ ); \
00043 throw target; \
00044 }
00045
00050 #define DECAF_CATCHALL_THROW( type ) \
00051 catch( ... ){ \
00052 type ex( __FILE__, __LINE__, \
00053 "caught unknown exception" ); \
00054 throw ex; \
00055 }
00056
00062 #define DECAF_CATCHALL_NOTHROW( ) \
00063 catch( ... ){ \
00064 lang::Exception ex( __FILE__, __LINE__, \
00065 "caught unknown exception, not rethrowing" ); \
00066 }
00067
00074 #define DECAF_CATCH_NOTHROW( type ) \
00075 catch( type& ex ){ \
00076 ex.setMark( __FILE__, __LINE__ ); \
00077 }
00078
00079 #endif