COMException Klasse

Definition

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

public ref class COMException : Exception
public ref class COMException : System::Runtime::InteropServices::ExternalException
public class COMException : Exception
public class COMException : System.Runtime.InteropServices.ExternalException
[System.Serializable]
public class COMException : System.Runtime.InteropServices.ExternalException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class COMException : System.Runtime.InteropServices.ExternalException
type COMException = class
    inherit Exception
type COMException = class
    inherit ExternalException
[<System.Serializable>]
type COMException = class
    inherit ExternalException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type COMException = class
    inherit ExternalException
Public Class COMException
Inherits Exception
Public Class COMException
Inherits ExternalException
Vererbung
COMException
Vererbung
Abgeleitet
Attribute

Hinweise

Die allgemeine Sprachlaufzeit transformiert bekannte HRESULTs in .NET Framework Ausnahmen, wodurch COM-Objekte aussagekräftige Fehlerinformationen an verwaltete Clients zurückgeben können. Die HRESULT-Ausnahmezuordnung funktioniert auch in der anderen Richtung, indem bestimmte HRESULTs an nicht verwaltete Clients zurückgegeben werden. Details zur Zuordnung finden Sie unter "Vorgehensweise: Zuordnen von HRESULTs und Ausnahmen".

Wenn die Laufzeit auf ein nicht vertrautes HRESULT (ein HRESULT, das eine bestimmte, entsprechende Ausnahme fehlt), wird eine Instanz der COMException Klasse ausgelöst. Diese ausnahme für alle Zwecke stellt die gleichen Member wie jede Ausnahme bereit und erbt eine öffentliche ErrorCode Eigenschaft, die die von dem angerufenen HRESULT zurückgegebene HRESULT enthält. Wenn eine Fehlermeldung für die Laufzeit verfügbar ist (abgerufen aus der IErrorInfo-Schnittstelle oder dem Err Objekt in Visual Basic oder in einigen Fällen aus dem 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 einem HRESULT kann der Aufrufer die Ursache der generischen Ausnahme bestimmen.

Behandeln einer COMException-Ausnahme

Im Folgenden finden Sie einige Überlegungen zur Problembehandlung bei einer COMException Ausnahme.

Überprüfen der ErrorCode Eigenschaft
Wenn die Laufzeit auf ein nicht vertrautes HRESULT auftritt und eine COMException Ausnahme auslöst, enthält die ErrorCode Eigenschaft entweder die Fehlermeldung oder, wenn eine Fehlermeldung nicht verfügbar ist, den achtstelligen HRESULT-Wert. Die Fehlermeldung oder der HRESULT-Wert können Ihnen helfen, die Ursache der Ausnahme zu ermitteln.

Eine Liste der HRESULT-Werte finden Sie unter Allgemeine HRESULT-Werte.

Spätgebundene Argumente und Microsoft Office Objekte
Beim Übergeben von spät gebundenen Argumenten an Methoden von Microsoft Office Objekten kann eine COMException Ausnahme ausgelöst werden, 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 funktioniert, generiert die .NET Framework eine Ausnahme (mit einem MissingMethodException 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 der Hostingprozess
COM wird verwendet, um zwischen Visual Studio und dem Hostingprozess zu kommunizieren. Da sie vor der Ausführung des Codes verwendet wird, führt ein Aufruf von CoInitializeSecurity dazu, dass diese Ausnahme ausgelöst wird.

In einigen Fällen kann das Ausführen von Visual Studio als Administrator das Problem beheben. Sie können auch den Hostingprozess deaktivieren.

Auslösen einer COMException-Ausnahme

Obwohl Sie die COMException Klasse verwenden können, um bestimmte HRESULTs für nicht verwaltete Clients zurückzugeben, ist das Auslösen einer bestimmten .NET Framework Ausnahme besser als die Verwendung einer generischen Ausnahme. Berücksichtigen Sie, dass verwaltete Clients sowie nicht verwaltete Clients Ihr .NET Framework -Objekt verwenden können, und das Auslösen eines HRESULT-Objekts auf einen verwalteten Aufrufer ist weniger verständlich als das Auslösen einer Ausnahme.

Konstruktoren

COMException()

Initialisiert eine neue Instanz der COMException-Klasse mit Standardwerten.

COMException(SerializationInfo, StreamingContext)

Initialisiert eine neue Instanz der COMException-Klasse aus Serialisierungsdaten.

COMException(String)

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

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.

COMException(String, Int32)

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

Eigenschaften

Data

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zur Ausnahme bereitstellen.

(Geerbt von Exception)
ErrorCode

Ruft das HRESULT des Fehlers ab.

(Geerbt von ExternalException)
HelpLink

Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest.

(Geerbt von Exception)
HResult

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.

(Geerbt von Exception)
InnerException

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat.

(Geerbt von Exception)
Message

Ruft eine Meldung ab, mit der die aktuelle Ausnahme beschrieben wird.

(Geerbt von Exception)
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)
StackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab.

(Geerbt von Exception)
TargetSite

Ruft die Methode ab, die die aktuelle Ausnahme auslöst.

(Geerbt von Exception)

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetBaseException()

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die Grundursache für eine oder mehrere nachfolgende Ausnahmen ist.

(Geerbt von Exception)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetObjectData(SerializationInfo, StreamingContext)

Legt beim Überschreiben in einer abgeleiteten Klasse die SerializationInfo mit Informationen über die Ausnahme fest.

(Geerbt von Exception)
GetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.

(Geerbt von Exception)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Konvertiert den Inhalt der Ausnahme in eine Zeichenfolge.

ToString()

Erstellt eine Zeichenfolgendarstellung der aktuellen Ausnahme und gibt diese zurück.

(Geerbt von Exception)

Ereignisse

SerializeObjectState
Veraltet.

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt mit serialisierten Daten über die Ausnahme zu erstellen.

(Geerbt von Exception)

Gilt für:

Siehe auch