Freigeben über


COMException-Klasse

 

Veröffentlicht: Juli 2016

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

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

Vererbungshierarchie

System.Object
  System.Exception
    System.SystemException
      System.Runtime.InteropServices.ExternalException
        System.Runtime.InteropServices.COMException
          System.DirectoryServices.DirectoryServicesCOMException

Syntax

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class COMException : ExternalException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class COMException : ExternalException
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type COMException = 
    class
        inherit ExternalException
    end
<SerializableAttribute>
<ComVisibleAttribute(True)>
Public Class COMException
    Inherits ExternalException

Konstruktoren

Name Beschreibung
System_CAPS_pubmethod COMException()

Initialisiert eine neue Instanz der COMException-Klasse mit Standardwerten.

System_CAPS_protmethod COMException(SerializationInfo, StreamingContext)

Initialisiert eine neue Instanz der COMException -Klasse aus Serialisierungsdaten.

System_CAPS_pubmethod COMException(String)

Initialisiert eine neue Instanz der COMException -Klasse mit einer angegebenen Meldung.

System_CAPS_pubmethod COMException(String, Exception)

Initialisiert eine neue Instanz der COMException-Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die diese Ausnahme ausgelöst hat.

System_CAPS_pubmethod COMException(String, Int32)

Initialisiert eine neue Instanz der COMException -Klasse mit einer angegebenen Meldung und den Fehlercode.

Eigenschaften

Name Beschreibung
System_CAPS_pubproperty Data

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen über die Ausnahme bereitstellen.(Geerbt von „Exception“.)

System_CAPS_pubproperty ErrorCode

Ruft das HRESULT des Fehlers ab.(Geerbt von „ExternalException“.)

System_CAPS_pubproperty HelpLink

Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest.(Geerbt von „Exception“.)

System_CAPS_pubproperty HResult

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.(Geerbt von „Exception“.)

System_CAPS_pubproperty InnerException

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat.(Geerbt von „Exception“.)

System_CAPS_pubproperty Message

Ruft eine Meldung ab, die die aktuelle Ausnahme beschreibt.(Geerbt von „Exception“.)

System_CAPS_pubproperty Source

Gibt den Namen der Anwendung oder des Objekts zurück, die bzw. das den Fehler verursacht hat, oder legt diesen fest.(Geerbt von „Exception“.)

System_CAPS_pubproperty StackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab.(Geerbt von „Exception“.)

System_CAPS_pubproperty TargetSite

Ruft die Methode ab, die die aktuelle Ausnahme auslöst.(Geerbt von „Exception“.)

Methoden

Name Beschreibung
System_CAPS_pubmethod Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_protmethod Finalize()

Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird.(Geerbt von „Object“.)

System_CAPS_pubmethod GetBaseException()

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die ursprüngliche Ursache für eine oder mehrere nachfolgende Ausnahmen ist.(Geerbt von „Exception“.)

System_CAPS_pubmethod GetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethod GetObjectData(SerializationInfo, StreamingContext)

Legt beim Überschreiben in einer abgeleiteten Klasse die SerializationInfo mit Informationen über die Ausnahme fest.(Geerbt von „Exception“.)

System_CAPS_pubmethod GetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.(Geerbt von „Exception“.)

System_CAPS_protmethod MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_pubmethod ToString()

Konvertiert den Inhalt der Ausnahme in eine Zeichenfolge.(Überschreibt ExternalException.ToString().)

Ereignisse

Name Beschreibung
System_CAPS_protevent SerializeObjectState

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt zu erstellen, das serialisierte Daten für die Ausnahme enthält.(Geerbt von „Exception“.)

Hinweise

Die common Language Runtime transformiert bekannte HRESULTs in .NET Framework-Ausnahmen Aktivieren der COM-Objekte aussagekräftigere Fehlermeldungen an verwaltete Clients zurückgeben. Das HRESULT für die Ausnahme Zuordnung funktioniert auch in die andere Richtung, indem bestimmte HRESULTs an nicht verwaltete Clients zurückgegeben. Zuordnungsdetails, finden Sie unter How to: Map HRESULTs and Exceptions.

Wenn die Laufzeit auf ein unbekanntes HRESULT (ein HRESULT, das fehlt eine entsprechende spezifische Ausnahme) trifft, löst Sie eine Instanz von aus dem COMException Klasse. Diese allgemeine Ausnahme macht dieselben Member wie jede Ausnahme und erbt von einer öffentlichen ErrorCode Eigenschaft, die das HRESULT enthält von der aufgerufenen Instanz zurückgegeben. Wenn eine Fehlermeldung für die Common Language Runtime verfügbar ist (abgerufenes der IErrorInfo Schnittstelle oder die Err Objekts in Visual Basic oder in einigen Fällen vom Betriebssystem), wird die Nachricht 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 den Aufrufer die Ursache der allgemeinen Ausnahme zu bestimmen.

Behandlung von COMException-Ausnahme

Im folgenden sind einige Überlegungen zur Problembehandlung bei einem COMException Ausnahme.

  • Überprüfen Sie die ErrorCode Eigenschaft
    Wenn die Laufzeit ein unbekanntes HRESULT trifft, und löst eine COMException Ausnahme, die ErrorCode Eigenschaft enthält entweder die Fehlermeldung oder, wenn eine Fehlermeldung nicht verfügbar ist, ist das achtstellige HRESULT-Wert. Die Fehlermeldung oder den HRESULT-Wert können Sie die Ursache der Ausnahme zu ermitteln.

    Eine Liste der HRESULT-Werte, finden Sie unter Common HRESULT Values.

  • Spät gebundene Argumente und Microsoft Office-Objekte
    Beim Übergeben spät gebundene Argumente an der Microsoft Office-Objekten eine COMException Ausnahme wird möglicherweise ausgelöst, wenn die Objekte COM-Objekte sind. 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 die Eigenschaft nicht der Fall ist, wird .NET Framework generiert einen MissingMethodException Ausnahme (mit einer CORE_E_MISSINGMETHOD HRESULT). Um dieses Verhalten zu vermeiden, müssen Sie früh gebundene Objekte verwenden oder eine Variable statt einer Objekteigenschaft übergeben.

  • Visual Studio und dem Hostprozess
    COM wird verwendet, um die Kommunikation zwischen Visual Studio und die hosting process. Da er vor der Ausführung von Code, einen Aufruf von dient CoInitializeSecurity bewirkt, dass diese Ausnahme ausgelöst wird.

    In einigen Fällen kann das Ausführen von Visual Studio als Administrator das Problem beheben. You can also disable the hosting process.

Auslösen einer COMException-Ausnahme

Sie können zwar die COMException Klasse bestimmte HRESULTs an nicht verwaltete Clients, die eine bestimmte .NET Framework-Ausnahme auslösen zurückgeben ist besser als die Verwendung einer generischen Ausnahme. Erwägen Sie, dass verwaltete Clients als auch nicht verwaltete Clients die .NET Framework-Objekt können und ein HRESULT für einem verwalteten Aufrufer auslösen weniger verständlich als eine Ausnahme auszulösen.

Versionsinformationen

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Threadsicherheit

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Siehe auch

Exception
System.Runtime.InteropServices-Namespace
Behandeln und Auslösen von Ausnahmen

Zurück zum Anfang