/********************************************************************************.h*********************************************************************************/
class CInterfaceException
{
public:
CInterfaceException(long linenum, const char* fileName, const char* desp);
CInterfaceException(const CInterfaceException& exp);
void* operator new(size_t size);
void* operator new(size_t size, const char* filename, int linenum);
void operator delete(void* buf);
void operator delete(void* buf, const char* filename, int linenum);
long m_nLinenum;
char m_szFileName[_MAX_PATH];
char m_szDesp[512];
};
/********************************************************************************.cpp*********************************************************************************/
CInterfaceException::CInterfaceException(long linenum, const char* fileName, const char* desp)
{
m_nLinenum = linenum;
strncpy_s(m_szFileName, _countof(m_szFileName), fileName, strlen(fileName));
strncpy_s(m_szDesp, _countof(m_szDesp), desp, strlen(desp));
}
CInterfaceException::CInterfaceException(const CInterfaceException& exp)
{
m_nLinenum = exp.m_nLinenum;
strncpy_s(m_szFileName, _countof(m_szFileName), exp.m_szFileName, strlen(exp.m_szFileName));
strncpy_s(m_szDesp, _countof(m_szDesp), exp.m_szDesp, strlen(exp.m_szDesp));
}
void* CInterfaceException::operator new(size_t size)
{
return malloc(size);
}
void* CInterfaceException::operator new(size_t size, const char* filename, int linenum)
{
return _malloc_dbg(size, _NORMAL_BLOCK, filename, linenum);
}
void CInterfaceException::operator delete(void* buf)
{
free(buf);
}
void CInterfaceException::operator delete(void* buf, const char* filename, int linenum)
{
_free_dbg(buf, _NORMAL_BLOCK);
}
/********************************************************************************demo*********************************************************************************/
try
{/***************************************************************************/
}
catch(CInterfaceException* p)
{
cout << "line=" << p->m_nLinenum << endl << "file=" << p->m_szFileName << endl << "desc="<< p->m_szDesp << endl;
delete p;
}