Gestione di eccezioni per interoperabilità COM
Il codice gestito può essere integrato con il codice non gestito per la gestione delle eccezioni. Se un metodo genera un'eccezione nel codice gestito, Common Language Runtime può passare un valore HRESULT a un oggetto COM. Se un metodo non riesce nel codice non gestito, restituendo un HRESULT di errore, il runtime genera un'eccezione che può essere intercettata dal codice gestito.
Il runtime esegue automaticamente il mapping HRESULT dall'interoperabilità COM per le eccezioni più specifiche. Ad esempio, E_ACCESSDENIED diventa UnauthorizedAccessException, E_OUTOFMEMORY diventa OutOfMemoryException, e così via.
Se il valore HRESULT è un risultato personalizzato o se è noto al runtime, il runtime passa un oggetto generico COMException al client. La proprietà ErrorCode di COMException contiene il valore HRESULT.
Uso di IErrorInfo
Quando un errore viene passato da COM al codice gestito, il runtime compila l'oggetto eccezione con informazioni sull'errore. Gli oggetti COM che supportano IErrorInfo e restituiscono valori HRESULT forniscono queste informazioni per le eccezioni del codice gestito. Ad esempio, il runtime esegue il mapping della descrizione dell'errore COM alla proprietà Message dell'eccezione. Se il valore HRESULT non fornisce alcuna informazione di errore, il runtime compila molte delle proprietà dell'eccezione con i valori predefiniti.
Se un metodo non riesce nel codice non gestito, un'eccezione può essere passata a un segmento di codice gestito. L'argomento HRESULT ed eccezioni contiene una tabella che mostra il mapping di HRESULT a oggetti eccezione di runtime.