Freigeben über


Problembehandlung bei Ausnahmen: System.Runtime.InteropServices.COMException

Aktualisiert: November 2007

Eine COMException-Ausnahme wird ausgelöst, wenn ein nicht erkanntes HRESULT von einem COM-Methodenaufruf zurückgegeben wird.

Tipps

  • Überprüfen Sie die ErrorCode-Eigenschaft der Ausnahme, um das vom COM-Objekt zurückgegebene HRESULT zu bestimmen
    Wenn die Laufzeit auf ein unbekanntes HRESULT trifft, wird eine COMException-Ausnahme ausgelöst. Diese enthält eine öffentliche ErrorCode-Eigenschaft, die das vom Aufruf zurückgegebene HRESULT enthält. Wenn der Laufzeit eine Fehlermeldung vorliegt, wird die Meldung an den Aufrufer zurückgegeben. Wenn der Entwickler der COM-Komponente jedoch keine Fehlermeldung geschrieben hat, gibt die Laufzeit statt einer Meldungszeichenfolge das achtstellige HRESULT zurück. Mit dem HRESULT kann der Aufrufer die Ursache der Ausnahme bestimmen. Weitere Informationen finden Sie unter Gewusst wie: Zuordnen von HRESULTs und Ausnahmen.

  • Deaktivieren Sie den Hostprozess.
    COM wird verwendet, um zwischen Visual Studio und dem Hostprozess zu kommunizieren. Da COM vor der Codeausführung verwendet wird, bewirkt ein Aufruf von CoInitializeSecurity, dass diese Ausnahme ausgelöst wird.

Hinweise

Die Common Language Runtime (CLR) wandelt bekannte HRESULTS in .NET-Ausnahmen um. Auf diese Weise können COM-Objekte aussagekräftigere Fehlermeldungen an verwaltete Clients zurückgeben. Das Zuordnen von HRESULTS zu Ausnahmen funktioniert auch in die andere Richtung, indem bestimmte HRESULTS an nicht verwaltete Clients zurückgegeben werden.

Beim Übergeben spät gebundener Parameter an Microsoft Office-COM-Objektmethoden wird möglicherweise eine COMException ausgelöst. Das spät bindende Objekt geht davon aus, dass solche Methodenaufrufe einen ByRef-Parameter einschließen und dass die übergebene Eigenschaft über einen Set-Accessor verfügt. Wenn das für die Eigenschaft nicht zutrifft, generiert .NET Framework eine MissingMethodException-Ausnahme (HRESULT CORE_E_MISSINGMETHOD). Um dieses Verhalten zu vermeiden, müssen Sie früh gebundene Objekte verwenden oder eine Variable statt einer Objekteigenschaft übergeben.

Siehe auch

Aufgaben

Gewusst wie: Weitere Informationen über eine Ausnahme mit dem Ausnahmen-Assistenten

Konzepte

Behandeln von COM-Interop-Ausnahmen

Referenz

COMException