COMException Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Az a kivétel, amely akkor fordul elő, ha egy nem felismert HRESULT egy COM-metódushívásból származik.
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
- Öröklődés
- Öröklődés
- Származtatott
- Attribútumok
Megjegyzések
Az COMException osztály az a kivétel, amely akkor fordul elő, ha a rendszer nem felismert HRESULT-t ad vissza egy COM-metódushívásból.
A közös nyelvi futtatókörnyezet a jól ismert HRESULT-eket .NET-kivételekké alakítja át, így a COM-objektumok értelmes hibainformációkat adnak vissza a felügyelt ügyfeleknek. Az HRESULT-to-exception leképzés a másik irányban is működik, és konkrét HRESULT-okat juttat vissza nem menedzselt klienseknek. Az HRESULT-ek és kivételek leképezéséről szóló részletekért lásd: Hogyan kell leképezni az HRESULT-eket és a kivételeket.
Amikor a futtatókörnyezet ismeretlen HRESULT-tal találkozik (olyan HRESULT-tal, amelyhez nincs meghatározott, megfelelő kivétel), a COMException osztály egy példányát dobja ki. Ez a minden célra használható kivétel ugyanazokat a tagokat teszi elérhetővé, mint bármely más kivétel, és örököl egy nyilvános ErrorCode tulajdonságot, amely tartalmazza a hívó által visszaadott HRESULT értéket (egy visszatérési érték a hívástól). Ha egy hibaüzenet elérhető a futtatókörnyezet számára (az IErrorInfo felületről vagy a Err Visual Basic objektumából, vagy bizonyos esetekben az operációs rendszerből), a rendszer visszaadja az üzenetet a hívónak. Ha azonban a COM-összetevő fejlesztője nem tartalmaz hibaüzenetet, a futtatókörnyezet egy üzenetsztring helyett a nyolcjegyű HRESULT értéket adja vissza. A HRESULT használatával a hívó meghatározhatja az általános kivétel okát.
COMException kivétel kezelése
Az alábbiakban néhány szempontot figyelembe kell venni egy COMException kivétel hibaelhárításához.
Ellenőrizze a ErrorCode tulajdonságot, ha a futtatókörnyezet ismeretlen HRESULT-tal találkozik, és kivételt COMException jelez, a ErrorCode tulajdonság tartalmazza a hibaüzenetet, vagy ha egy hibaüzenet nem érhető el, a nyolcjegyű HRESULT értéket. A hibaüzenet vagy a HRESULT érték segíthet meghatározni a kivétel okát.
A HRESULT értékek listáját a Gyakori HRESULT értékek című témakörben találja.
Ha későn kötött argumentumokat ad át a Microsoft Office-objektumok metódusainak, kivételt okozhat, COMException ha az objektumok COM-objektumok. A késői iratgyűjtő feltételezi, hogy az ilyen metódushívások magukban foglalnak egy ByRef paramétert, és hogy az átadott tulajdonsághoz tartozik egy set hozzáférő. Ha a tulajdonság nem létezik, a .NET egy MissingMethodException kivételt hoz létre (egy CORE_E_MISSINGMETHOD HRESULT-tal). A viselkedés megkerüléséhez használjon korai kötésű objektumokat, vagy adjon át egy változót az objektum tulajdonsága helyett.
A COM a Visual Studio és az üzemeltetési folyamat közötti kommunikációra szolgál. Mivel a kód futtatása előtt használják, a CoInitializeSecurity hívása miatt ez a kivétel ki lesz dobva. Bizonyos esetekben a Visual Studio rendszergazdaként való futtatása megoldhatja a problémát. Az üzemeltetési folyamatot is letilthatja.
Dobja a COMException kivételt
Bár az COMException osztály használatával adott HRESULT-értékeket adhat vissza a nem felügyelt ügyfeleknek, egy adott .NET-kivétel eldobása jobb, mint egy általános kivétel használata. Vegye figyelembe, hogy a felügyelt ügyfelek és a nem felügyelt ügyfelek is használhatják a .NET-objektumot, és a HRESULT egy felügyelt hívónak való dobása kevésbé érthető, mint egy kivétel kivetése.
Konstruktorok
| Name | Description |
|---|---|
| COMException() |
Inicializálja az osztály új példányát alapértelmezett COMException értékekkel. |
| COMException(SerializationInfo, StreamingContext) |
Elavult.
Inicializálja az osztály új példányát a COMException szerializálási adatokból. |
| COMException(String, Exception) |
Inicializálja az COMException osztály új példányát egy megadott hibaüzenettel és a kivétel okaként szolgáló belső kivételre mutató hivatkozással. |
| COMException(String, Int32) |
Inicializálja az COMException osztály új példányát egy megadott üzenettel és hibakóddal. |
| COMException(String) |
Inicializálja az COMException osztály új példányát egy megadott üzenettel. |
Tulajdonságok
| Name | Description |
|---|---|
| Data |
Lekéri a kulcs-/érték párok gyűjteményét, amelyek további, felhasználó által definiált információkat biztosítanak a kivételről. (Öröklődés forrása Exception) |
| ErrorCode |
Lekéri a |
| HelpLink |
Lekéri vagy beállítja a kivételhez társított súgófájlra mutató hivatkozást. (Öröklődés forrása Exception) |
| HResult |
Lekéri vagy beállítja a HRESULT-ot, egy kódolt numerikus értéket, amely egy adott kivételhez van hozzárendelve. (Öröklődés forrása Exception) |
| InnerException |
Lekéri az Exception aktuális kivételt okozó példányt. (Öröklődés forrása Exception) |
| Message |
Az aktuális kivételt leíró üzenet jelenik meg. (Öröklődés forrása Exception) |
| Source |
Lekéri vagy beállítja az alkalmazás vagy a hibát okozó objektum nevét. (Öröklődés forrása Exception) |
| StackTrace |
Lekéri a hívásverem közvetlen kereteinek sztringképét. (Öröklődés forrása Exception) |
| TargetSite |
Lekéri az aktuális kivételt okozó metódust. (Öröklődés forrása Exception) |
Metódusok
| Name | Description |
|---|---|
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetBaseException() |
Ha egy származtatott osztály felül van bírálva, egy Exception vagy több későbbi kivétel kiváltó okát adja vissza. (Öröklődés forrása Exception) |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Elavult.
Ha felül van bírálva egy származtatott osztályban, a SerializationInfo kivétel adatait adja meg. (Öröklődés forrása Exception) |
| GetType() |
Lekéri az aktuális példány futtatókörnyezeti típusát. (Öröklődés forrása Exception) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| ToString() |
A kivétel tartalmát sztringgé alakítja. |
| ToString() |
Létrehozza és visszaadja az aktuális kivétel sztring-ábrázolását. (Öröklődés forrása Exception) |
esemény
| Name | Description |
|---|---|
| SerializeObjectState |
Elavult.
Akkor fordul elő, ha a kivétel szerializálva van egy kivételállapot-objektum létrehozásához, amely szerializált adatokat tartalmaz a kivételről. (Öröklődés forrása Exception) |