Behandeln von COM-Interop-Ausnahmen

Verwalteter und nicht verwalteter Code können zusammenarbeiten, um Ausnahmen zu behandeln. Wenn eine Methode eine Ausnahme in verwaltetem Code auslöst, kann durch die CLR (Common Language Runtime) ein HRESULT an ein COM-Objekt weitergegeben werden. Wenn eine Methode in nicht verwaltetem Code fehlschlägt und ein fehlerhaftes HRESULT zurückgibt, löst die CLR eine Ausnahme aus, die von verwaltetem Code abgefangen werden kann.

Die CLR ordnet das HRESULT von COM-Interop automatisch spezifischeren Ausnahmen zu. Zum Beispiel wird aus E_ACCESSDENIED eine UnauthorizedAccessException, aus E_OUTOFMEMORY eine OutOfMemoryException usw.

Ist HRESULT ein benutzerdefiniertes Ergebnis oder der CLR nicht bekannt, übergibt die CLR eine allgemeine COMException an den Client. Die ErrorCode-Eigenschaft der COMException enthält den HRESULT-Wert.

Eine detaillierte Erläuterung zu COM-Interop finden Sie unter Erweiterte COM-Interoperabilität.

Arbeiten mit IErrorInfo

Wird ein Fehler von COM an verwalteten Code übergeben, füllt die CLR das Ausnahmeobjekt mit Fehlerinformationen aus. Diese Informationen werden Ausnahmen in verwaltetem Code von COM-Objekten geliefert, die IErrorInfo unterstützen und HRESULTS zurückgeben. Beispielsweise ordnet die CLR die Beschreibung des COM-Fehlers der Message-Eigenschaft der Ausnahme zu. Liefert HRESULT keine weiteren Fehlerinformationen, werden viele Ausnahmeeigenschaften von der CLR mit Standardwerten besetzt.

Wenn eine Methode in nicht verwaltetem Code fehlschlägt, kann eine Ausnahme an einen verwalteten Codeabschnitt übergeben werden. Das Thema HRESULTS und Ausnahmen enthält eine Tabelle mit Zuordnungen von HRESULTS zu Ausnahmeobjekten.

Siehe auch

Weitere Ressourcen

Erweiterte COM-Interoperabilität

Behandeln und Auslösen von Ausnahmen