15 #include "utils/StringUtils.h" 22 #define XBMCCOMMONS_ATTRIB_EXCEPTION_FORMAT __attribute__((format(printf,2,3))) 24 #define XBMCCOMMONS_ATTRIB_EXCEPTION_FORMAT 27 #define XBMCCOMMONS_COPYVARARGS(fmt) va_list argList; va_start(argList, fmt); Set(fmt, argList); va_end(argList) 28 #define XBMCCOMMONS_STANDARD_EXCEPTION(E) \ 29 class E : public XbmcCommons::Exception \ 32 inline E(const char* message,...) XBMCCOMMONS_ATTRIB_EXCEPTION_FORMAT : Exception(#E) { XBMCCOMMONS_COPYVARARGS(message); } \ 34 inline E(const E& other) : Exception(other) {} \ 48 std::string classname;
53 inline explicit Exception(
const char* classname_) : classname(classname_) { }
54 inline Exception(
const char* classname_,
const char* message_) : classname(classname_), message(message_) { }
61 inline void Set(
const char*
fmt, va_list& argList)
63 message = StringUtils::FormatV(fmt, argList);
70 inline void SetMessage(
const char*
fmt, ...) XBMCCOMMONS_ATTRIB_EXCEPTION_FORMAT
73 XBMCCOMMONS_COPYVARARGS(fmt);
76 inline void setClassname(
const char* cn) { classname = cn; }
81 virtual void LogThrowMessage(
const char* prefix = NULL)
const;
83 inline virtual const char* GetExMessage()
const {
return message.c_str(); }
93 XBMCCOMMONS_STANDARD_EXCEPTION(UncheckedException);
108 #define XBMCCOMMONS_HANDLE_UNCHECKED \ 109 catch (const XbmcCommons::UncheckedException& ) { throw; } \ 110 catch (const XbmcCommons::UncheckedException* ) { throw; }
void Set(const char *fmt, va_list &argList)
This method is called from the constructor of subclasses.
Definition: Exception.h:61
void SetMessage(const char *fmt,...) XBMCCOMMONS_ATTRIB_EXCEPTION_FORMAT
This message can be called from the constructor of subclasses.
Definition: Exception.h:70
This class a superclass for exceptions that want to utilize some utility functionality including auto...
Definition: Exception.h:44