Gestion des exceptions COM InteropHandling COM Interop Exceptions

Le code managé et le code non managé peuvent collaborer pour gérer les exceptions.Managed and unmanaged code can work together to handle exceptions. Si une méthode lève une exception dans du code managé, le common language runtime peut passer HRESULT à un objet COM.If a method throws an exception in managed code, the common language runtime can pass an HRESULT to a COM object. Si une méthode échoue dans du code non managé en retournant un échec HRESULT, le runtime lève une exception qui peut être interceptée par du code managé.If a method fails in unmanaged code by returning a failure HRESULT, the runtime throws an exception that can be caught by managed code.

Le runtime mappe automatiquement la valeur HRESULT de COM Interop à des exceptions plus spécifiques.The runtime automatically maps the HRESULT from COM interop to more specific exceptions. Par exemple, E_ACCESSDENIED devient UnauthorizedAccessException, E_OUTOFMEMORY devient OutOfMemoryException, etc.For example, E_ACCESSDENIED becomes UnauthorizedAccessException, E_OUTOFMEMORY becomes OutOfMemoryException, and so on.

Si la valeur HRESULT est un résultat personnalisé ou si elle est inconnue du runtime, le runtime passe une exception générique COMException au client.If the HRESULT is a custom result or if it is unknown to the runtime, the runtime passes a generic COMException to the client. La propriété ErrorCode de la COMException contient la valeur HRESULT.The ErrorCode property of the COMException contains the HRESULT value.

Utilisation d'IErrorInfoWorking with IErrorInfo

Quand une erreur est passée de COM à du code managé, le runtime renseigne l'objet exception avec les informations de l'erreur.When an error is passed from COM to managed code, the runtime populates the exception object with error information. Les objets COM qui prennent en charge IErrorInfo et qui retournent des valeurs HRESULT fournissent ces informations aux exceptions du code managé.COM objects that support IErrorInfo and return HRESULTS provide this information to managed code exceptions. Par exemple, le runtime mappe la description de l'erreur COM à la propriété Message de l'exception.For example, the runtime maps the Description from the COM error to the exception's Message property. Si la valeur HRESULT ne fournit pas d'informations d'erreur supplémentaires, le runtime renseigne un grand nombre de propriétés de l'exception avec des valeurs par défaut.If the HRESULT provides no additional error information, the runtime fills many of the exception's properties with default values.

Si une méthode échoue dans du code non managé, une exception peut être passée à un segment de code managé.If a method fails in unmanaged code, an exception can be passed to a managed code segment. La rubrique Valeurs HRESULT et exceptions contient un tableau montrant comment les valeurs HRESULT sont mappées aux objets exception du runtime.The topic HRESULTS and Exceptions contains a table showing how HRESULTS map to runtime exception objects.

Voir aussiSee also