Back
#include "stdafx.h"
#include "PSLExceptions.h"
#include "ProSysModule.h"
#include "resource.h"
#define IMPL_EXCEPTION(E)\
case EX_##E:\
{\
tstring s;\
s.resize(1024);\
::LoadString(_Module.GetResourceInstance(), IDS_##E, (LPTSTR)s.c_str(), 1024);\
return AtlReportError(clsID, (LPCOLESTR)(LPCTSTR)s.c_str(), ID, E_##E);\
}
HRESULT GetGlobalExitCode(long exCode, const CLSID & clsID, const IID ID)
{
if(!exCode)
return S_OK;
switch(exCode)
{
IMPL_EXCEPTION(GENERALFAILURE)
IMPL_EXCEPTION(INDEXOUTOFRANGE)
IMPL_EXCEPTION(NOTIMPLEMENTED)
IMPL_EXCEPTION(LOWMEMORY)
IMPL_EXCEPTION(NOACCESS)
IMPL_EXCEPTION(INVALIDPARAMETER)
IMPL_EXCEPTION(WMIERROR)
default:
throw; // If this ever happens, it's because I forgot to add
// implementation macro to a new exception type;
}
return S_FALSE;
}
Top |