Condividi tramite


Gestione di eccezioni per interoperabilità COM

È possibile utilizzare unitamente codice gestito e non gestito per gestire le eccezioni. Se un metodo genera un'eccezione in codice gestito, è possibile che in Common Language Runtime venga passato un HRESULT a un oggetto COM. Se un metodo ha esito negativo in codice non gestito e restituisce un HRESULT di errore, nel runtime verrà generata un'eccezione intercettabile dal codice gestito.

Nel runtime viene associato automaticamente l'HRESULT prodotto da interoperabilità COM a eccezioni più specifiche. Ad esempio, E_ACCESSDENIED diviene UnauthorizedAccessException, E_OUTOFMEMORY diviene OutOfMemoryException e così via.

Se HRESULT rappresenta un risultato personalizzato o non è noto al runtime, al client verrà passata un'eccezione COMException generica. La proprietà ErrorCode di COMException contiene il valore di HRESULT.

Per informazioni dettagliate sull'interoperabilità COM, vedere Interoperabilità COM avanzata.

Utilizzo di IErrorInfo

Quando un errore viene passato da COM al codice gestito, nel runtime l'oggetto eccezione viene compilato con informazioni sugli errori. Gli oggetti COM che supportano IErrorInfo e restituiscono HRESULT forniscono queste informazioni alle eccezioni del codice gestito. Nel runtime, ad esempio, la descrizione dell'errore COM viene associata alla proprietà Message dell'eccezione. Se in HRESULT non vengono fornite informazioni supplementari sull'errore, nel runtime verranno assegnati valori predefiniti a numerose proprietà dell'eccezione.

Se un metodo ha esito negativo in codice non gestito, è possibile che venga passata un'eccezione a un segmento di codice gestito. Nell'argomento HRESULT ed eccezioni è disponibile una tabella in cui è illustrato il mapping tra gli HRESULT e gli oggetti eccezione del runtime.

Vedere anche

Concetti

Gestione e generazione di eccezioni

Altre risorse

Interoperabilità COM avanzata