📄 errorhandling.hpp
字号:
#ifdef __cplusplusextern "C" {#endif#ifndef kGenericError #define kGenericError -1#endifextern char *gErrorMessage;void SetErrorMessage(const char *theErrorMessage);void SetErrorMessageAndAppendLongInt(const char *theErrorMessage,const long theLongInt);void SetErrorMessageAndCStrAndLongInt(const char *theErrorMessage,const char * theCStr,const long theLongInt);void SetErrorMessageAndCStr(const char *theErrorMessage,const char * theCStr);void AppendCStrToErrorMessage(const char *theErrorMessage);void AppendLongIntToErrorMessage(const long theLongInt);char *GetErrorMessage(void);OSErr GetErrorMessageInNewHandle(Handle *inoutHandle);OSErr GetErrorMessageInExistingHandle(Handle inoutHandle);OSErr AppendErrorMessageToHandle(Handle inoutHandle);#ifdef __EXCEPTIONS_ENABLED__ void ThrowErrorMessageException(void);#endif// A bunch of evil macros that would be uneccessary if I were always using C++ !#define SetErrorMessageAndBailIfNil(theArg,theMessage) \{ \ if (theArg == nil) \ { \ SetErrorMessage(theMessage); \ errCode = kGenericError; \ goto EXITPOINT; \ } \}#define SetErrorMessageAndBail(theMessage) \{ \ SetErrorMessage(theMessage); \ errCode = kGenericError; \ goto EXITPOINT; \}#define SetErrorMessageAndLongIntAndBail(theMessage,theLongInt) \{ \ SetErrorMessageAndAppendLongInt(theMessage,theLongInt); \ errCode = kGenericError; \ goto EXITPOINT; \}#define SetErrorMessageAndLongIntAndBailIfError(theErrCode,theMessage,theLongInt) \{ \ if (theErrCode != noErr) \ { \ SetErrorMessageAndAppendLongInt(theMessage,theLongInt); \ errCode = theErrCode; \ goto EXITPOINT; \ } \}#define SetErrorMessageCStrLongIntAndBailIfError(theErrCode,theMessage,theCStr,theLongInt) \{ \ if (theErrCode != noErr) \ { \ SetErrorMessageAndCStrAndLongInt(theMessage,theCStr,theLongInt); \ errCode = theErrCode; \ goto EXITPOINT; \ } \}#define SetErrorMessageAndCStrAndBail(theMessage,theCStr) \{ \ SetErrorMessageAndCStr(theMessage,theCStr); \ errCode = kGenericError; \ goto EXITPOINT; \}#define SetErrorMessageAndBailIfError(theErrCode,theMessage) \{ \ if (theErrCode != noErr) \ { \ SetErrorMessage(theMessage); \ errCode = theErrCode; \ goto EXITPOINT; \ } \}#define SetErrorMessageAndLongIntAndBailIfNil(theArg,theMessage,theLongInt) \{ \ if (theArg == nil) \ { \ SetErrorMessageAndAppendLongInt(theMessage,theLongInt); \ errCode = kGenericError; \ goto EXITPOINT; \ } \}#define BailIfError(theErrCode) \{ \ if ((theErrCode) != noErr) \ { \ goto EXITPOINT; \ } \}#define SetErrCodeAndBail(theErrCode) \{ \ errCode = theErrCode; \ \ goto EXITPOINT; \}#define SetErrorCodeAndMessageAndBail(theErrCode,theMessage) \{ \ SetErrorMessage(theMessage); \ errCode = theErrCode; \ goto EXITPOINT; \}#define BailNow() \{ \ errCode = kGenericError; \ goto EXITPOINT; \}#ifdef __cplusplus}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -