Delen via


Strategieën voor foutafhandeling

Omdat interfacemethoden virtueel zijn, is het niet mogelijk dat een aanroeper de volledige set waarden kent die door een aanroep kunnen worden geretourneerd. Eén implementatie van een methode kan vijf waarden retourneren; een andere kan acht retourneren.

De documentatie bevat algemene waarden die voor elke methode kunnen worden geretourneerd; dit zijn de waarden die u moet controleren en verwerken in uw code, omdat ze speciale betekenissen hebben. Andere waarden kunnen worden geretourneerd, maar omdat ze niet zinvol zijn, hoeft u geen speciale code te schrijven om ze te verwerken. Een eenvoudige controle op nul of niet-nul is voldoende.

HRESULT-waarden

De retourwaarde van COM-functies en -methoden is een HRESULT-. De waarden van sommige HRESULT's zijn gewijzigd in COM om alle duplicatie en overlapping met de systeemfoutcodes te elimineren. Die dubbele systeemfoutcodes zijn gewijzigd in FACILITY_WIN32 en die overlappen, blijven in FACILITY_NULL. Algemene HRESULT waarden en de bijbehorende waarden worden vermeld in de volgende tabel.

HRESULT Waarde Beschrijving
E_ABORT
0x80004004
De bewerking is afgebroken vanwege een niet-opgegeven fout.
E_ACCESSDENIED
0x80070005
Een algemene fout met geweigerde toegang.
E_FAIL
0x80004005
Er is een niet-opgegeven fout opgetreden.
E_HANDLE
0x80070006
Er is een ongeldige ingang gebruikt.
E_INVALIDARG
0x80070057
Een of meer argumenten zijn ongeldig.
E_NOINTERFACE
0x80004002
De QueryInterface methode herkent de aangevraagde interface niet. De interface wordt niet ondersteund.
E_NOTIMPL
0x80004001
De methode is niet geïmplementeerd.
E_OUTOFMEMORY
0x8007000E
De methode kan het benodigde geheugen niet toewijzen.
E_PENDING
0x8000000A
De gegevens die nodig zijn om de bewerking te voltooien, zijn nog niet beschikbaar.
E_POINTER
0x80004003
Er is een ongeldige aanwijzer gebruikt.
E_UNEXPECTED
0x8000FFFF
Er is een onherstelbare fout opgetreden.
S_FALSE
0x00000001
De methode is geslaagd en heeft de Booleaanse waarde geretourneerd FALSE.
S_OK
0x00000000
De methode is geslaagd. Als een Booleaanse retourwaarde wordt verwacht, wordt de geretourneerde waarde TRUE.

Netwerkfouten

Als de eerste vier cijfers van de foutcode 8007 zijn, geeft dit een systeem- of netwerkfout aan. U kunt de opdracht net gebruiken om deze typen fouten te decoderen. Als u de fout wilt decoderen, converteert u eerst de laatste vier cijfers van de hexadecimale foutcode naar decimaal. Typ vervolgens bij de opdrachtprompt het volgende, waarbij decimale code wordt vervangen door de retourwaarde die u wilt decoderen:

net helpmsg-<decimal_code>

De net-opdracht retourneert een beschrijving van de fout. Als COM bijvoorbeeld de fout 8007054B retourneert, converteert u de 054B naar decimaal (1355). Typ vervolgens het volgende:

net helpmsg 1355

De netopdracht retourneert de foutbeschrijving: 'Het opgegeven domein bestaat niet'.

foutafhandeling in COM-