Megosztás a következőn keresztül:


Hibakeresés és hibajelentés globális függvények

Megjegyzés:

Az aktív sablontár (ATL) továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Ezek a funkciók hasznos hibakeresési és nyomkövetési lehetőségeket biztosítanak.

Név Description
AtlHresultFromLastError Egy HRESULT formátumú hibakódot ad GetLastError vissza.
AtlHresultFromWin32 Egy Win32 hibakódot HRESULT-sá alakít át.
AtlReportError Beállítja IErrorInfo , hogy hibaadatokat adjon meg egy ügyfélnek.
AtlThrow Dob egy CAtlException.
AtlThrowLastWin32 Hívja meg ezt a függvényt, hogy a Windows függvény GetLastErroreredménye alapján jelezzen egy hibát.

AtlHresultFromLastError

A híváslánc utolsó hibakódértékét adja vissza HRESULT formátumban.

HRESULT AtlHresultFromLastError();

Megjegyzések

AtlHresultFromLastError meghívja GetLastError az utolsó hibát, és visszaadja a hibát, miután az HRESULT_FROM_WIN32 makróval HRESULT-ra konvertálta.

Requirements

Fejléc: atlcomcli.h

AtlHresultFromWin32

Egy Win32 hibakódot HRESULT-sá alakít át.

AtlHresultFromWin32(DWORD error);

Paraméterek

hiba
Az átalakítandó hibaérték.

Megjegyzések

A Win32 hibakódot HRESULT-vá alakítja át a makró HRESULT_FROM_WIN32 használatával.

Megjegyzés:

A használat HRESULT_FROM_WIN32(GetLastError())helyett használja az AtlHresultFromLastError függvényt.

Requirements

Fejléc: atlcomcli.h

AtlReportError

Beállítja a felületet, IErrorInfo hogy hibainformációt adjon az objektum ügyfeleinek.

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());

Paraméterek

clsid
[in] A hibát jelentő objektum CLSID azonosítója.

lpszDesc
[in] A hibát leíró sztring. A Unicode-verziók megadják, hogy az lpszDesc LPCOLESTR típusú; az ANSI-verzió az LPCSTR típusát határozza meg.

iid
[in] A hibát meghatározó interfész IID azonosítója, vagy GUID_NULL, ha a hibát az operációs rendszer határozza meg.

hRes
[in] A hívónak visszaadni kívánt HRESULT.

nID
[in] Az erőforrás-azonosító, ahol a hibaleírási sztringet tárolja. Ennek az értéknek 0x0200 és 0xFFFF közé kell esnie, beleértve azokat is. Hibakeresési buildekben az ASSERT függvény akkor jön létre, ha az nID nem indexel érvényes sztringet. A kiadási buildekben a hibaleírási sztring "Ismeretlen hiba" értékre lesz állítva.

dwHelpID
[in] A hiba súgókörnyezet-azonosítója.

lpszHelpFile
[in] A hibát leíró súgófájl elérési útja és neve.

hInst
[in] Az erőforrás leírója. Alapértelmezés szerint ez a __AtlBaseModuleModule::GetResourceInstance__AtlBaseModuleModule paraméter a CAtlBaseModule globális példánya vagy az abból származtatott osztály.

Visszaadott érték

Ha a hRes paraméter nem nulla, a hRes értékét adja vissza. Ha a hRes értéke nulla, akkor a visszatérés első négy verziója AtlReportError DISP_E_EXCEPTION. Az utolsó két verzió a makró MAKE_HRESULT(1, FACILITY_ITF;nID)eredményét adja vissza.

Megjegyzések

A hiba szöveges leírása az lpszDesc sztring. Amikor az ügyfél megkapja a visszaadott AtlReportErrorhRe-ket, az ügyfél hozzáférhet a struktúrához a IErrorInfo hiba részleteiért.

Example

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");
}

Caution

Ne használja AtlReportError a C++ fogáskezelőket. Ezen függvények egyes felülbírálásai belsőleg használják az ATL-sztring-konverziós makrókat, amelyek belsőleg használják a _alloca függvényt. A AtlReportError C++ fogáskezelő használata kivételeket okozhat a C++ fogáskezelőkben.

Requirements

Fejléc: atlcom.h

AtlThrow

Hívja meg ezt a függvényt egy HRESULT állapotkódon alapuló hiba jelzéséhez.

__declspec(noreturn) inline void AtlThrow(HRESULT hr);

Paraméterek

hr
Standard HRESULT érték.

Megjegyzések

Ezt a függvényt az ATL és az MFC-kód használja hibaállapot esetén. Saját kódból is meghívható. A függvény alapértelmezett implementációja a szimbólum _ATL_NO_EXCEPTIONS definíciójától és a projekt típusától, az MFC-től vagy az ATL-től függ.

Ez a függvény minden esetben a hibakeresőhöz lenyomozza a HRESULT-t.

A Visual Studio 2015 3. és újabb frissítésében ez a függvény __declspec(noreturn) attribútummal van elosztva a hamis SAL-figyelmeztetések elkerülése érdekében.

Ha _ATL_NO_EXCEPTIONS nincs definiálva egy MFC-projektben, ez a függvény A HRESULT értéke alapján CMemoryException vagy COleException értéket ad.

Ha _ATL_NO_EXCEPTIONS nincs meghatározva ATL-projektben, a függvény CAtlException értéket ad.

Ha _ATL_NO_EXCEPTIONS van definiálva, a függvény a kivétel kivetése helyett helyességi hibát okoz.

ATL-projektek esetén lehetőség van a függvény saját implementálására, amelyet az ATL használ meghibásodás esetén. Ehhez definiálja saját függvényét ugyanazzal az aláírással, mint AtlThrow és #define AtlThrow , hogy a függvény neve legyen. Ezt az atlexcept.h felvétele előtt kell megtenni (ami azt jelenti, hogy az ATL-fejlécek felvétele előtt kell megtenni, mivel az atlbase.h tartalmazza az atlexcept.h-t). Rendelje hozzá a függvényt __declspec(noreturn) a hamis SAL-figyelmeztetések elkerülése érdekében.

Example

// Constructors and operators cannot return error codes, and
// so they are the place where exceptions are generally used.
class CMyClass
{
private:
   CComPtr<IBuddy> m_spBuddy;
public:
   CMyClass()
   {
      HRESULT hr = m_spBuddy.CoCreateInstance(CLSID_Buddy);
      if (FAILED(hr))
         AtlThrow(hr);
   }
   //   methods ..
};

Requirements

Fejléc: atldef.h

AtlThrowLastWin32

Hívja meg ezt a függvényt, hogy a Windows függvény GetLastErroreredménye alapján jelezzen egy hibát.

inline void AtlThrowLastWin32();

Megjegyzések

Ez a függvény a hibakereső eredményének GetLastError nyomon követésére használható.

Ha _ATL_NO_EXCEPTIONS nincs definiálva egy MFC-projektben, ez a függvény a visszaadott GetLastErrorérték alapján CMemoryException vagy COleException értéket ad vissza.

Ha _ATL_NO_EXCEPTIONS nincs meghatározva ATL-projektben, a függvény CAtlException értéket ad.

Ha _ATL_NO_EXCEPTIONS van definiálva, a függvény a kivétel kivetése helyett helyességi hibát okoz.

Requirements

Fejléc: atldef.h

Lásd még

Funkciók
Hibakeresés és hibajelentési makrók