Dela via


Hantera COM-interop-undantag

Hanterad och ohanterad kod kan fungera tillsammans för att hantera undantag. Om en metod genererar ett undantag i hanterad kod kan den vanliga språkkörningen skicka en HRESULT till ett COM-objekt. Om en metod misslyckas i ohanterad kod genom att returnera ett fel i HRESULT utlöser körningen ett undantag som kan fångas av hanterad kod.

Körningen mappar automatiskt HRESULT från COM-interop till mer specifika undantag. Till exempel blir UnauthorizedAccessExceptionE_ACCESSDENIED , E_OUTOFMEMORY blir OutOfMemoryExceptionoch så vidare.

Om HRESULT är ett anpassat resultat eller om det är okänt för körningen skickar körningen en allmän COMException till klienten. Egenskapen ErrorCode för COMException innehåller HRESULT-värdet.

Arbeta med IErrorInfo

När ett fel skickas från COM till hanterad kod fyller körningen i undantagsobjektet med felinformation. COM-objekt som stöder IErrorInfo och returnerar HRESULTS tillhandahåller den här informationen till undantag för hanterad kod. Körningen mappar till exempel beskrivningen från COM-felet till undantagets Message egenskap. Om HRESULT inte innehåller någon ytterligare felinformation fyller körningen många av undantagets egenskaper med standardvärden.

Om en metod misslyckas i ohanterad kod kan ett undantag skickas till ett hanterat kodsegment. Ämnet HRESULTS och undantag innehåller en tabell som visar hur HRESULTS mappar till körningsundatagsobjekt.

Se även