Ce type d'exception doit être levée lorsque vous essayez d'ajouter des éléments en double pour une collection?
Code suivant doit jeter l'exception pour empêcher l'ajout double élément de la collection.
ICollection<T> collection = new List<T>();
public void Add(T item)
{
if (collection.Contain(item))
{
throw new SomeExceptionType()
}
collection.Add(item);
}
Ce standard type d'exception est le plus approprié?
- Plus proche d'exception, j'ai trouvé DuplicateNameException pour les bases de données ... qui est juste une mauvaise idée pour un
Collection
. Message à retenir: toute Personne voulant plus spécifiques pourraient rouler leur propre Exception
Vous devez vous connecter pour publier un commentaire.
Bien,
Dictionary<,>.Add()
jetteArgumentException
si cette clé existe déjà, donc je suppose que cela pourrait être un précédent.ArgumentException serait probablement le meilleur. C'est l'exception levée lorsqu'un argument est invalide.
Linq utilise deux exceptions DuplicateNameException et DuplicateKeyException vous pouvez les utiliser si vous utilisez le système.les données de l'assemblée.
Je voudrais utiliser
InvalidOperationException
:Puisque la validité de l'argument de la valeur dépend de l'état de l'objet (qui est de savoir si ou de ne pas
collection.Contains(item)
est vrai), je pense que c'est le meilleur exception à utiliser.Assurez-vous que vous ajoutez un bon message, à l'exception qu'il soit clair que le problème était à l'appelant.
ArgumentException serait la bonne exception (Dictionnaire utilise cette exception ainsi)
Je dirais
InvalidOperationException
, car il n'est pas possible d'ajouter un objet qui est déjà dans la collectionJe voudrais jeter un ArgumentException. C'est ce que le générique
System.Collections.Generic.SortedList<>
n'est dans sesAdd
méthode.De la .NET Framework 2.0: