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-Ausnahme, E_OUTOFMEMORY wird zur OutOfMemoryException-Ausnahme usw.
Ist HRESULT ein benutzerdefiniertes Ergebnis oder der CLR nicht bekannt, wird von der CLR eine allgemeine COMException an den Client übergeben. 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 wird durch die CLR die Beschreibung des COM-Fehlers der Message-Eigenschaft der Ausnahme zugeordnet. 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