Partager via


Gestion des exceptions COM Interop

Le code managé et le code non managé peuvent gérer les exceptions en collaboration. Si une méthode lève une exception dans un code managé, le Common Language Runtime peut passer HRESULT à un objet COM. Si une méthode échoue dans un code non managé en retournant un HRESULT d'échec, le runtime lève une exception pouvant être interceptée par un code managé.

Le runtime mappe automatiquement le HRESULT de COM Interop à des exceptions plus spécifiques. Par exemple, E_ACCESSDENIED devient UnauthorizedAccessException, E_OUTOFMEMORY devient OutOfMemoryException, et ainsi de suite.

Si HRESULT est un résultat personnalisé ou s'il est inconnu du runtime, celui-ci passe une exception COMException générique au client. La propriété ErrorCode de COMException contient la valeur HRESULT.

Pour une description complète de COM Interop, consultez Interopérabilité COM avancée.

Utilisation d'IErrorInfo

Lorsqu'une erreur est passée à un code managé à partir de COM, le runtime remplit l'objet exception avec des informations d'erreur. Les objets COM qui prennent en charge IErrorInfo et retournent des HRESULTS fournissent ces informations aux exceptions du code managé. Par exemple, le runtime mappe la description de l'erreur COM à la propriété Message de l'exception. Si le HRESULT ne fournit aucune information d'erreur supplémentaire, le runtime remplit un grand nombre des propriétés de l'exception avec des valeurs par défaut.

Si une méthode échoue dans un code non managé, une exception peut être passée à un segment de code managé. La rubrique Valeurs HRESULT et exceptions contient une table montrant le mappage entre HRESULTS et les objets exception runtime.

Voir aussi

Autres ressources

Interopérabilité COM avancée
Gestion et levée des exceptions