共用方式為


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

請參閱

參考

MAKE_HRESULT

其他資源

偵錯和錯誤報告全域函式