1234567891011121314151617181920212223242526272829303132333435 |
- #ifndef _zexception_hpp_
- #define _zexception_hpp_
- #include <stdarg.h>
- #include <exception>
- #include <string>
- #define DEF_EXCEPTION(clsname)\
- class clsname##_exception:public std::exception\
- {\
- std::string m_what;\
- public:\
- clsname##_exception(const std::string&msg) throw():m_what(msg) { } \
- ~clsname##_exception() throw() { } \
- const char* what() const throw() { return m_what.c_str(); }\
- };
- inline const char*eformat(char*buf,const char*fmt,...)
- {
- va_list ap;
- va_start(ap, fmt);
- vsprintf(buf,fmt,ap);
- va_end(ap);
- return buf;
- }
- #define THROW_EXCEPTION(clsname,fmt,...) {\
- char ___fmt0[512]; \
- char ___buf[2048]; \
- sprintf(___fmt0,"[%s:%d]%s",__FILE__,__LINE__,fmt);\
- eformat(___buf,fmt,##__VA_ARGS__);\
- throw clsname##_exception(___buf);\
- }
- #endif
|