00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00036 #ifndef OW_CIMEXCEPTION_HPP_INCLUDE_GUARD_
00037 #define OW_CIMEXCEPTION_HPP_INCLUDE_GUARD_
00038 #include "OW_config.h"
00039 #include "OW_Exception.hpp"
00040
00041 namespace OW_NAMESPACE
00042 {
00043
00044 class OW_COMMON_API CIMException : public Exception
00045 {
00046 public:
00047 enum ErrNoType
00048 {
00050 SUCCESS = 0,
00055 FAILED = 1,
00057 ACCESS_DENIED = 2,
00059 INVALID_NAMESPACE = 3,
00061 INVALID_PARAMETER = 4,
00063 INVALID_CLASS = 5,
00065 NOT_FOUND = 6,
00067 NOT_SUPPORTED = 7,
00071 CLASS_HAS_CHILDREN = 8,
00075 CLASS_HAS_INSTANCES = 9,
00080 INVALID_SUPERCLASS = 10,
00082 ALREADY_EXISTS = 11,
00084 NO_SUCH_PROPERTY = 12,
00086 TYPE_MISMATCH = 13,
00088 QUERY_LANGUAGE_NOT_SUPPORTED = 14,
00090 INVALID_QUERY = 15,
00092 METHOD_NOT_AVAILABLE = 16,
00094 METHOD_NOT_FOUND = 17
00095 };
00096
00097 CIMException(const char* file, int line, ErrNoType errval,
00098 const char* msg=0, const Exception* otherException = 0);
00099
00100 virtual ~CIMException() throw();
00101 void swap(CIMException& x);
00102 CIMException(const CIMException& x);
00103 CIMException& operator=(const CIMException& x);
00104
00105 ErrNoType getErrNo() const { return ErrNoType(getErrorCode()); }
00106 void setErrNo(ErrNoType e) { setErrorCode(e); }
00113 const char* getDescription() const;
00114 virtual const char* type() const;
00115 virtual CIMException* clone() const throw();
00116
00123 static const char* getCodeDescription(ErrNoType errCode);
00124
00125 private:
00126 const char* m_description;
00127 };
00128
00134 #define OW_THROWCIM(errval) \
00135 throw CIMException(__FILE__, __LINE__, (errval))
00136
00144 #define OW_THROWCIM_SUBEX(errval, subex) \
00145 throw CIMException(__FILE__, __LINE__, (errval), (subex).getMessage(), &(subex))
00146
00152 #define OW_THROWCIMMSG(errval, msg) \
00153 throw CIMException(__FILE__, __LINE__, (errval), (msg))
00154
00162 #define OW_THROWCIMMSG_SUBEX(errval, msg, subex) \
00163 throw CIMException(__FILE__, __LINE__, (errval), (msg), &(subex))
00164
00165 }
00166
00167 #endif