AtlReportError
設定 IErrorInfo 介面提供錯誤資訊給物件的用戶端。
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
LPCOLESTR lpszDesc,
const IID& iid = GUID_NULL,
HRESULT hRes = 0
);
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
LPCOLESTR lpszDesc,
DWORD dwHelpID,
LPCOLESTR lpszHelpFile,
const IID& iid = GUID_NULL,
HRESULT hRes = 0
);
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
LPCSTR lpszDesc,
const IID& iid = GUID_NULL,
HRESULT hRes = 0
);
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
LPCSTR lpszDesc,
DWORD dwHelpID,
LPCSTR lpszHelpFile,
const IID& iid = GUID_NULL,
HRESULT hRes = 0
);
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
UINT nID,
const IID& iid = GUID_NULL,
HRESULT hRes = 0,
HINSTANCE hInst = _AtlBaseModule.GetResourceInstance( )
);
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
UINT nID,
DWORD dwHelpID,
LPCOLESTR lpszHelpFile,
const IID& iid = GUID_NULL,
HRESULT hRes = 0,
HINSTANCE hInst = _AtlBaseModule.GetResourceInstance( )
);
參數
clsid
[in] 所報告的物件 CLSID 的錯誤。lpszDesc
[out] 描述錯誤的字串。Unicode 版本指定 lpszDesc 是型別 LPCOLESTR; LPCSTRANSI 版本所指定的型別。iid
[in] 定義錯誤或 GUID_NULL 介面的 IID,如果錯誤是由作業系統所定義。hRes
[in] 要傳回至呼叫端的 HRESULT 。nID
[out] 用來儲存錯誤描述字串的資源識別項。這個值必須介於和之間 0x0200 0xFFFF,則包含。nID 索引,如果沒有有效的字串,在偵錯組建中, ASSERT 仍然會發生。在發行的組建中,錯誤描述字串會設為「未知的錯誤」。dwHelpID
[in] 錯誤的說明主題代碼。lpszHelpFile
[in] 說明檔案的路徑和名稱描述錯誤。hInst
[out] 資源控制代碼。根據預設,這個參數是 __AtlBaseModuleModule::GetResourceInstance, __AtlBaseModuleModule 是從它衍生的類別 CAtlBaseModule 或全域執行個體。
傳回值
如果 hRes 參數不是零,則會傳回 hRes的值。如果 hRes 為零,則 AtlReportError 傳回 DISP_E_EXCEPTION前四個版本。前兩個版本傳回巨集 MAKE_HRESULT( 1, FACILITY_ITF, nID **)**的結果。
備註
字串 lpszDesc 當做錯誤的文字描述。當用戶端收到有關錯誤的詳細資訊,請 AtlReportError從傳回的 hRes 時,用戶端可以存取的 IErrorInfo 結構。
範例
STDMETHODIMP CMyControl::MyErrorProneMethod()
{
BOOL bSucceeded = ErrorProneFunc();
if (bSucceeded)
return S_OK;
else
// hRes is set to DISP_E_EXCEPTION
return AtlReportError(GetObjectCLSID(), L"My error message");
}
警告 |
---|
請不要使用 AtlReportError 在 C++ catch 處理常式。某些覆寫這些函式內部使用 ATL 字串轉換巨集,接著在內部使用 _alloca 函式。使用在 . C ++ catch 處理常式的 AtlReportError 在 C++ catch 處理常式可能會導致例外狀況。 |
需求
Header: atlcom.h