1*c2c66affSColin Finck #ifndef _FBT_EXCEPT_H
2*c2c66affSColin Finck 
3*c2c66affSColin Finck #include "fbtLog.h"
4*c2c66affSColin Finck 
5*c2c66affSColin Finck #ifdef __cplusplus
6*c2c66affSColin Finck 
7*c2c66affSColin Finck #include "fbtSeXcpt.h"
8*c2c66affSColin Finck 
9*c2c66affSColin Finck #define FBT_TRY try {
10*c2c66affSColin Finck #define FBT_CATCH } catch (fbtSeException *e) { fbtLog(fbtLog_Failure, "Exception %08X caught at line %u in file %s", e->GetSeCode(), __LINE__, __FILE__); fbtLog(fbtLog_Exception, "Exception %08X caught at line %u in file %s", e->GetSeCode(), __LINE__, __FILE__);
11*c2c66affSColin Finck #define FBT_CATCH_RETURN(RETVAL) FBT_CATCH return RETVAL;}
12*c2c66affSColin Finck #define FBT_CATCH_NORETURN FBT_CATCH return;}
13*c2c66affSColin Finck 
14*c2c66affSColin Finck #else
15*c2c66affSColin Finck 
16*c2c66affSColin Finck #define FBT_TRY __try{
17*c2c66affSColin Finck #define FBT_CATCH } __except(EXCEPTION_EXECUTE_HANDLER) { fbtLog(fbtLog_Failure, "Exception %08X caught at line %u in file %s (%s)", GetExceptionCode(), __LINE__, __FILE__, GetCommandLine()); fbtLog(fbtLog_Exception, "Exception %08X caught at line %u in file %s (%s)", GetExceptionCode(), __LINE__, __FILE__, GetCommandLine());
18*c2c66affSColin Finck #define FBT_CATCH_RETURN(RETVAL) FBT_CATCH return RETVAL;}
19*c2c66affSColin Finck #define FBT_CATCH_NORETURN FBT_CATCH return;}
20*c2c66affSColin Finck #define FBT_CATCH_NODEBUG_RETURN(x) } __except(EXCEPTION_EXECUTE_HANDLER) { return x;}
21*c2c66affSColin Finck 
22*c2c66affSColin Finck #endif // __cplusplus
23*c2c66affSColin Finck 
24*c2c66affSColin Finck #endif _FBT_EXCEPT_H
25