Behandeln von COM-Interop-AusnahmenHandling COM Interop Exceptions

Verwalteter und nicht verwalteter Code können zusammenarbeiten, um Ausnahmen zu behandeln.Managed and unmanaged code can work together to handle exceptions. Wenn eine Methode in verwaltetem Code eine Ausnahme auslöst, kann die Common Language Runtime ein HRESULT an ein COM-Objekt übergeben.If a method throws an exception in managed code, the common language runtime can pass an HRESULT to a COM object. Wenn eine Methode in nicht verwaltetem Code fehlschlägt, indem ein Fehler-HRESULT zurückgegeben wird, löst die Common Language Runtime eine Ausnahme aus, die von verwaltetem Code abgefangen werden kann.If a method fails in unmanaged code by returning a failure HRESULT, the runtime throws an exception that can be caught by managed code.

Die Common Language Runtime ordnet das HRESULT von COM-Interop automatisch zu spezifischeren Ausnahmen zu.The runtime automatically maps the HRESULT from COM interop to more specific exceptions. So wird z. B. E_ACCESSDENIED zu UnauthorizedAccessException, E_OUTOFMEMORY zu OutOfMemoryException usw.For example, E_ACCESSDENIED becomes UnauthorizedAccessException, E_OUTOFMEMORY becomes OutOfMemoryException, and so on.

Wenn HRESULT ein benutzerdefiniertes Ergebnis wird oder es zur Laufzeit unbekannt ist, übergibt die Common Language Runtime ein generisches COMException an den Client.If the HRESULT is a custom result or if it is unknown to the runtime, the runtime passes a generic COMException to the client. Die ErrorCode-Eigenschaft von COMException enthält den HRESULT-Wert.The ErrorCode property of the COMException contains the HRESULT value.

Arbeiten mit IErrorInfoWorking with IErrorInfo

Wenn ein Fehler von COM an verwalteten Code übergeben wird, füllt die Common Language Runtime das Ausnahmeobjekt mit Fehlerinformationen.When an error is passed from COM to managed code, the runtime populates the exception object with error information. COM-Objekte, die "IErrorInfo" unterstützen und HRESULTS zurückgeben, stellen diese Informationen für Ausnahmen in verwaltetem Code bereit.COM objects that support IErrorInfo and return HRESULTS provide this information to managed code exceptions. Die Common Language Runtime ordnet die Beschreibung des COM-Fehlers zur Message-Eigenschaft der Ausnahme zu.For example, the runtime maps the Description from the COM error to the exception's Message property. Wenn HRESULT keine weiteren Fehlerinformationen bereitstellt, füllt die Common Language Runtime viele Eigenschaften der Ausnahme mit Standardwerten.If the HRESULT provides no additional error information, the runtime fills many of the exception's properties with default values.

Wenn eine Methode in nicht verwaltetem Code fehlschlägt, kann eine Ausnahme an ein verwaltetes Codesegment übergeben werden.If a method fails in unmanaged code, an exception can be passed to a managed code segment. Das Thema HRESULTS und Ausnahmen enthält eine Tabelle mit Zuordnungen von HRESULTS zu Ausnahmeobjekten der Common Language Runtime.The topic HRESULTS and Exceptions contains a table showing how HRESULTS map to runtime exception objects.

Siehe auchSee also