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".