Welcher Ausnahmetyp sollte beim Versuch, doppelte Elemente zu einer Sammlung hinzuzufügen, ausgelöst werden?
Folgende code sollte Ausnahme auslösen um zu verhindern, dass das hinzufügen von doppelten Sammlung Element.
ICollection<T> collection = new List<T>();
public void Add(T item)
{
if (collection.Contain(item))
{
throw new SomeExceptoinType()
}
collection.Add(item);
}
Welche standard-exception-Typ ist die apropriate?
Kommentar zu dem Problem
Am nächsten spezifische Ausnahme, die ich gefunden habe, war DuplicateNameException für Datenbanken ... das ist einfach nur eine schlechte Idee für einen
Collection
. Take-home-message: Wer mehr spezifische konnte Rollen Sie Ihre eigene Exception InformationsquelleAutor der Frage klashar | 2009-08-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut,
Dictionary<,>.Add()
wirftArgumentException
wenn solche Schlüssel bereits vorhanden ist, so dass ich denke, dies könnte ein Präzedenzfall.InformationsquelleAutor der Antwort Pavel Minaev
ArgumentException wäre wahrscheinlich die beste. Dies ist die Ausnahme, die ausgelöst wird, wenn ein argument ungültig ist.
InformationsquelleAutor der Antwort Brandon
Linq verwendet zwei weitere Ausnahmen DuplicateNameException und DuplicateKeyException diese können Sie nutzen, wenn Sie mit system.Daten-assembly.
InformationsquelleAutor der Antwort amarnath chatterjee
Ich würde
InvalidOperationException
:Da die Gültigkeit des Arguments der Wert ist abhängig vom Status des Objekts (das heißt, ob oder nicht
collection.Contains(item)
wahr ist) ich denke, dies ist die beste Ausnahme zu verwenden.Stellen Sie sicher, dass Sie eine gute Nachricht mit der Ausnahme, dass macht es klar, was das problem war der Anrufer.
InformationsquelleAutor der Antwort Andrew Hare
ArgumentException wäre der richtige Ausnahme (Dictionary verwendet, die Ausnahme)
InformationsquelleAutor der Antwort cyberconte
InformationsquelleAutor der Antwort Ben M
Ich würde werfen eine ArgumentException ausgelöst. Das ist es, was die generische
System.Collections.Generic.SortedList<>
imAdd
Methode.Aus der .NET Framework 2.0-code:
InformationsquelleAutor der Antwort Paul Williams
Ich würde sagen
InvalidOperationException
, denn es ist nicht gültig, um ein Objekt hinzuzufügen, die bereits in der SammlungInformationsquelleAutor der Antwort Thomas Levesque