COMException Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 |
| 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) |