Risoluzione dei problemi relativi alle eccezioni: System.Runtime.InteropServices.COMException

Un'eccezione COMException viene generata quando viene restituito un HRESULT non riconosciuto da una chiamata a un metodo COM.

Suggerimenti associati

  • Controllare la proprietà ErrorCode dell'eccezione per determinare HRESULT restituito dall'oggetto COM.
    Quando rileva un HRESULT non riconosciuto, il runtime genera un'eccezione COMException che include una proprietà pubblica ErrorCode contenente l'HRESULT restituito dalla chiamata. Se è disponibile un messaggio di errore, al chiamante verrà restituito tale messaggio. Se invece lo sviluppatore del componente COM non include un messaggio di errore, in sostituzione della stringa del messaggio verrà restituito l'HRESULT di otto cifre. La disponibilità di un HRESULT consente al chiamante di determinare la causa dell'eccezione. Per ulteriori informazioni, vedere Procedura: eseguire il mapping di HRESULT ed eccezioni.

  • Disabilitare il processo host.
    COM viene utilizzato per la comunicazione tra Visual Studio e il processo host. Poiché viene utilizzato prima dell'esecuzione del codice, una chiamata a CoInitializeSecurity causerà la generazione di questa eccezione.

Osservazioni

Common Language Runtime (CLR) trasforma gli HRESULT noti in eccezioni .NET, in modo da consentire agli oggetti COM di restituire ai client gestiti informazioni significative sugli errori. Il mapping tra HRESULT ed eccezione può essere eseguito anche in senso inverso, restituendo HRESULT specifici a client non gestiti.

Quando si passano parametri con associazione tardiva a metodi di oggetti di Microsoft Office, se si tratta di oggetti COM è possibile che venga generata un'eccezione COMException. Il gestore di associazione tardiva presuppone che nelle chiamate ai metodi venga utilizzato un parametro ByRef e che la proprietà passata disponga di una funzione di accesso Set. Se la proprietà non dispone di tale funzione, .NET Framework genererà un'eccezione MissingMethodException (HRESULT CORE_E_MISSINGMETHOD). Per ovviare a questo problema, utilizzare oggetti con associazione anticipata oppure passare una variabile anziché una proprietà dell'oggetto.

Vedere anche

Attività

Procedura: utilizzare Informazioni sulle eccezioni

Riferimenti

COMException

Concetti

Gestione di eccezioni per interoperabilità COM