Hantering av 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 HRESULT utlöser runtime-miljön ett undantag som kan fångas av hanterad kod.

Körtiden mappar automatiskt HRESULT från COM-Interop till mer specifika undantag. Till exempel blir E_ACCESSDENIED UnauthorizedAccessException, E_OUTOFMEMORY blir OutOfMemoryException, och så vidare.

Om HRESULT är ett anpassat resultat eller om det är okänt för körtiden skickar körtiden 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örtiden i undantagsobjektet med felinformation. COM-objekt som stöder IErrorInfo och returnerar HRESULT tillhandahåller den här undantagsinformationen för hanterad kod. Som exempel mappar körtiden beskrivningen från COM-felet till undantagets Message-egenskap. Om HRESULT inte innehåller någon ytterligare felinformation fyller runtime:en i 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örningsundantagsobjekt.

Se även