#define THROW_API_ERROR(EXCEPTION,fmt,...) do{                   \
char msg[200];                                   \
sprintf(msg,fmt,##__VA_ARGS__);                    \
std::string reason = GetLastAPIErrorReason(msg); \
throw EXCEPTION(reason);                         \
}while(0)
这段宏定义代码什么意思,我知道是定义的异常时候的宏,这么使用的:THROW_API_ERROR(MyException,"启动%s失败",cmdline);
API异常