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


Hibakezelési stratégiák

Mivel a felületi metódusok virtuálisak, a hívó nem ismerheti meg az egyetlen hívásból visszaadható értékek teljes készletét. Egy metódus egy implementációja öt értéket adhat vissza; egy másik nyolcat is visszaadhat.

A dokumentáció felsorolja az egyes metódusokhoz visszaadható közös értékeket; Ezek azok az értékek, amelyeket ellenőriznie kell és kezelnie kell a kódban, mert speciális jelentéssel rendelkeznek. Más értékek is visszaadhatók, de mivel ezek nem értelmezhetők, nem kell speciális kódot írnia a kezelésükhöz. A nulla vagy a nemzero egyszerű ellenőrzése megfelelő.

HRESULT értékek

A COM-függvények és metódusok visszatérési értéke egy HRESULT. Egyes HRESULT-értékek módosultak a COM-ban, hogy kiküszöböljék az összes duplikációt, és átfedésben legyenek a rendszer hibakódjaival. Az ismétlődő rendszerhibakódok FACILITY_WIN32 módosultak, és az átfedésben lévők továbbra is FACILITY_NULL maradnak. A gyakori HRESULT értékek és azok értékei az alábbi táblázatban találhatók.

HRESULT Érték Leírás
E_ABORT
0x80004004
A művelet egy meghatározatlan hiba miatt megszakadt.
E_ACCESSDENIED
0x80070005
Általános hozzáférés-megtagadásos hiba.
E_FAIL
0x80004005
Meghatározatlan hiba történt.
E_HANDLE
0x80070006
Érvénytelen leírót használtunk.
E_INVALIDARG
0x80070057
Egy vagy több argumentum érvénytelen.
E_NOINTERFACE
0x80004002
A QueryInterface metódus nem ismerte fel a kért felületet. A felület nem támogatott.
E_NOTIMPL
0x80004001
A metódus nincs implementálva.
E_OUTOFMEMORY
0x8007000E
A metódus nem tudta lefoglalni a szükséges memóriát.
E_PENDING
0x8000000A
A művelet végrehajtásához szükséges adatok még nem érhetők el.
E_POINTER
0x80004003
Érvénytelen mutatót használtunk.
E_UNEXPECTED
0x8000FFFF
Katasztrofális hiba történt.
S_FALSE
0x00000001
A metódus sikeres volt, és visszaadta a hamis logikai értéket.
S_OK
0x00000000
A metódus sikeres volt. Ha logikai visszatérési érték várható, a visszaadott érték IGAZ.

Hálózati hibák

Ha a hibakód első négy számjegye 8007, az rendszer- vagy hálózati hibát jelez. Az ilyen típusú hibák dekódolásához használhatja a net parancsot. A hiba dekódolásához először konvertálja a hexadecimális hibakód utolsó négy számjegyét decimálissá. Ezután írja be a parancssorba a következőt, ahol a tizedesjel helyébe a dekódolni kívánt visszatérési érték lép:

hálózati segélyszolgálati <decimal_code>

A net parancs a hiba leírását adja vissza. Ha például a COM a 8007054B hibát adja vissza, konvertálja a 054B-t decimálissá (1355). Ezután írja be a következőket:

net helpmsg 1355

A net parancs a következő hibaleírást adja vissza: "A megadott tartomány nem létezik".

hibakezelés a COM