You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
1.7 KiB
111 lines
1.7 KiB
#pragma once
|
|
|
|
|
|
// Exception to be thrown if the process is canceled by the user
|
|
class CCancelException
|
|
{
|
|
};
|
|
|
|
|
|
|
|
// Base exception class
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
class CBaseException
|
|
{
|
|
protected:
|
|
enum
|
|
{
|
|
MaxErrorBuff = 2 * 1024, // Buffer for formating string messages
|
|
};
|
|
|
|
protected:
|
|
CBaseException(){}
|
|
|
|
|
|
public:
|
|
CBaseException( UINT nResID, DWORD dwCode = ::GetLastError() )
|
|
{
|
|
FormatError( nResID, dwCode );
|
|
}
|
|
|
|
CBaseException( LPCWSTR wszError, DWORD dwCode = ::GetLastError() )
|
|
{
|
|
FormatError( wszError, dwCode );
|
|
}
|
|
|
|
LPCWSTR GetDescription()const{ return m_strError.c_str(); }
|
|
|
|
|
|
protected:
|
|
void FormatError( UINT nResID, DWORD dwCode );
|
|
void FormatError( LPCWSTR wszError, DWORD dwCode );
|
|
|
|
|
|
private:
|
|
std::wstring m_strError;
|
|
};
|
|
|
|
|
|
|
|
// CObjectException - exception on object access/acquire
|
|
class CObjectException : public CBaseException
|
|
{
|
|
public:
|
|
CObjectException( UINT nResID, LPCWSTR wszObject, DWORD dwCode = ::GetLastError() );
|
|
CObjectException( UINT nResID,
|
|
LPCWSTR wszObject1,
|
|
LPCWSTR wszObject2,
|
|
DWORD dwCode = ::GetLastError() );
|
|
};
|
|
|
|
|
|
|
|
// CUnexpectedException - exception that is not expected to normally ocure
|
|
/*CUnexpectedException( char* file , UINT nLine, HRESULT hr = S_OK )
|
|
{
|
|
WCHAR wszBuffer[ CBaseException::MaxErrorBuff ];
|
|
|
|
try
|
|
{
|
|
USES_CONVERSION;
|
|
|
|
::swprintf( wszBuffer,
|
|
L"Unexpected exception occured.\nFile: '%s'.\nLine: %d\nCode: %x",
|
|
A2W( file ),
|
|
nLine,
|
|
hr );
|
|
|
|
}
|
|
catch(...)
|
|
{
|
|
// A2W exceptions
|
|
}
|
|
|
|
CBaseException::FormatError( wszBuffer, hr );
|
|
}
|
|
};*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|