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.