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 | |
---|---|---|
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 den Fehlercode. |
Eigenschaften
Name | Beschreibung | |
---|---|---|
Data | Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen über die 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, die die aktuelle Ausnahme beschreibt.(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
Name | Beschreibung | |
---|---|---|
Equals(Object) | Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.) |
|
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“.) |
|
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“.) |
|
GetHashCode() | Fungiert als die 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.(Überschreibt ExternalException.ToString().) |
Ereignisse
Name | Beschreibung | |
---|---|---|
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