Partager via


Les exceptions doivent être publiques

Mise à jour : novembre 2007

TypeName

ExceptionsShouldBePublic

CheckId

CA1064

Catégorie

Microsoft.CSharp

Modification avec rupture

Modification sans rupture

Cause

Une exception non publique dérive directement de System.Exception, System.SystemExceptionou de System.ApplicationException.

Description de la règle

Une exception interne est uniquement visible à l'intérieur de sa propre portée interne. Lorsque l'exception se situe en dehors de la portée interne, seule l'exception de base peut être utilisée pour intercepter l'exception. Si l'exception interne est héritée de T:System.Exception, de T:System.SystemException ou de T:System.ApplicationException, le code externe n'a pas d'informations suffisantes pour savoir que faire avec l'exception.

Mais, si le code a une exception publique utilisée ultérieurement comme base pour une exception interne, vous pouvez considérer que le code plus externe sera en mesure de faire quelque chose d'intelligent avec l'exception de base. L'exception publique aura plus d'informations que ce qui est fourni par T:System.Exception, T:System.SystemException ou T:System.ApplicationException.

Comment corriger les violations

Rendez l'exception publique ou dérivez l'exception interne d'une exception publique qui n'est pas System.Exception, System.SystemExceptionou System.ApplicationException.

Quand supprimer les avertissements

Supprimez un message de cette règle si vous êtes certain dans tous les cas que l'exception privée sera interceptée dans sa propre portée interne.

Exemple

Les trois exemples suivants enfreignent la règle.