COMException Classe

Definizione

Eccezione generata quando viene restituito un HRESULT non riconosciuto da una chiamata al metodo COM.

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
Ereditarietà
COMException
Ereditarietà
Derivato
Attributi

Commenti

La COMException classe è l'eccezione generata quando viene restituito un HRESULT non riconosciuto da una chiamata al metodo COM.

Common Language Runtime trasforma le eccezioni HRESULT note in eccezioni .NET, consentendo agli oggetti COM di restituire informazioni significative sugli errori ai client gestiti. La mappatura da HRESULT a exception funziona anche nell'altra direzione restituendo HRESULT specifici ai clienti non gestiti. Per dettagli sulla mappatura, vedere Come eseguire la mappatura di HRESULT ed eccezioni.

Quando il runtime rileva un HRESULT sconosciuto (hresult privo di un'eccezione specifica e corrispondente), genera un'istanza della COMException classe . Questa eccezione universale espone gli stessi membri di qualsiasi eccezione e eredita una proprietà pubblica ErrorCode che contiene il valore HRESULT restituito dalla parte chiamata. Se è disponibile un messaggio di errore per il runtime (ottenuto dall'interfaccia IErrorInfo o dall'oggetto Err in Visual Basic o in alcuni casi dal sistema operativo), il messaggio viene restituito al chiamante. Tuttavia, se lo sviluppatore del componente COM non include un messaggio di errore, il runtime restituisce il valore HRESULT a otto cifre al posto di una stringa di messaggio. La presenza di un HRESULT consente al chiamante di determinare la causa dell'eccezione generica.

Gestire un'eccezione di tipo COMException

Di seguito sono riportate alcune considerazioni per la risoluzione di un'eccezione COMException .

Controllare la ErrorCode proprietà Quando il runtime rileva un HRESULT non familiare e genera un'eccezione COMException , la ErrorCode proprietà include il messaggio di errore o, se un messaggio di errore non è disponibile, il valore HRESULT a otto cifre. Il messaggio di errore o il valore HRESULT consente di determinare la causa dell'eccezione.

Per un elenco dei valori HRESULT, vedere Valori HRESULT comuni.

Quando si passano argomenti con associazione tardiva ai metodi degli oggetti di Microsoft Office, è possibile che venga generata un'eccezione COMException quando gli oggetti sono oggetti COM. Il gestore di associazione tardivo presuppone che tali chiamate al metodo includano un ByRef parametro e che la proprietà passata abbia una set funzione di accesso. Se la proprietà non esiste, .NET genera un'eccezione MissingMethodException (con un HRESULT CORE_E_MISSINGMETHOD ). Per ovviare a questo comportamento, utilizzare oggetti con associazione anticipata o passare una variabile anziché una proprietà dell'oggetto .

COM viene usato per comunicare tra Visual Studio e il processo di hosting. Poiché viene usato prima dell'esecuzione del codice, una chiamata a CoInitializeSecurity causa la generazione di questa eccezione. In alcuni casi, l'esecuzione di Visual Studio come amministratore può risolvere il problema. È anche possibile disabilitare il processo di hosting.

Generare un'eccezione COMException

Sebbene sia possibile usare la COMException classe per restituire HRESULT specifici ai client non gestiti, la generazione di un'eccezione .NET specifica è migliore rispetto all'uso di un'eccezione generica. Si consideri che i client gestiti e i client non gestiti possono usare l'oggetto .NET e generare un HRESULT a un chiamante gestito è meno comprensibile che generare un'eccezione.

Costruttori

Nome Descrizione
COMException()

Inizializza una nuova istanza della COMException classe con valori predefiniti.

COMException(SerializationInfo, StreamingContext)
Obsoleti.

Inizializza una nuova istanza della COMException classe dai dati di serializzazione.

COMException(String, Exception)

Inizializza una nuova istanza della COMException classe con un messaggio di errore specificato e un riferimento all'eccezione interna che è la causa di questa eccezione.

COMException(String, Int32)

Inizializza una nuova istanza della COMException classe con un messaggio e un codice di errore specificati.

COMException(String)

Inizializza una nuova istanza della COMException classe con un messaggio specificato.

Proprietà

Nome Descrizione
Data

Ottiene una raccolta di coppie chiave/valore che forniscono informazioni aggiuntive definite dall'utente sull'eccezione.

(Ereditato da Exception)
ErrorCode

Ottiene l'oggetto HRESULT dell'errore.

(Ereditato da ExternalException)
HelpLink

Ottiene o imposta un collegamento al file della Guida associato a questa eccezione.

(Ereditato da Exception)
HResult

Ottiene o imposta HRESULT, valore numerico codificato assegnato a un'eccezione specifica.

(Ereditato da Exception)
InnerException

Ottiene l'istanza Exception che ha causato l'eccezione corrente.

(Ereditato da Exception)
Message

Ottiene un messaggio che descrive l'eccezione corrente.

(Ereditato da Exception)
Source

Ottiene o imposta il nome dell'applicazione o dell'oggetto che causa l'errore.

(Ereditato da Exception)
StackTrace

Ottiene una rappresentazione di stringa dei fotogrammi immediati nello stack di chiamate.

(Ereditato da Exception)
TargetSite

Ottiene il metodo che genera l'eccezione corrente.

(Ereditato da Exception)

Metodi

Nome Descrizione
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetBaseException()

Quando sottoposto a override in una classe derivata, restituisce l'oggetto Exception che rappresenta la causa radice di una o più eccezioni successive.

(Ereditato da Exception)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetObjectData(SerializationInfo, StreamingContext)
Obsoleti.

In caso di override in una classe derivata, imposta con le SerializationInfo informazioni sull'eccezione.

(Ereditato da Exception)
GetType()

Ottiene il tipo di runtime dell'istanza corrente.

(Ereditato da Exception)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Converte il contenuto dell'eccezione in una stringa.

ToString()

Crea e restituisce una rappresentazione di stringa dell'eccezione corrente.

(Ereditato da Exception)

Eventi

Nome Descrizione
SerializeObjectState
Obsoleti.

Si verifica quando viene serializzata un'eccezione per creare un oggetto stato dell'eccezione contenente dati serializzati sull'eccezione.

(Ereditato da Exception)

Si applica a

Vedi anche