Ich habe eine String-Eigenschaft, die eine maximale Länge erfordert, da die Daten mit einer Datenbank verknüpft sind. Welche Ausnahme sollte ich auslösen, wenn der Anrufer versucht, eine Zeichenfolge zu setzen, die diese Länge überschreitet?Welche Ausnahme von einem Property Setter zu werfen?
Zum Beispiel dieses C# -Code:
public string MyProperty
{
get
{
return _MyBackingField;
}
set
{
if (value.Length > 100)
throw new FooException("MyProperty has a maximum length of 100.");
_MyBackingField = value;
}
}
ich als ArgumentException
, aber es scheint einfach nicht richtig. Technisch ist es eine Funktion - MyProperty_set(string value)
- so kann ein Fall für ArgumentException
gemacht werden, aber es wird nicht als eine Funktion für die Augen des Verbrauchers aufgerufen - es ist auf der rechten Seite eines Zuweisungsoperators.
Diese Frage könnte wahrscheinlich auch auf alle Arten von Datenvalidierung ausgedehnt werden, die in Property Settern gemacht werden, aber ich bin besonders an dem obigen Fall interessiert.
BTW, wirft Mono ein Argument in diesem Fall ... –
„ArgumentOutOfRangeException - Die Ausnahme, die ausgelöst wird, wenn der Wert eines Arguments außerhalb des zulässigen Wertebereiches ist, wie durch der definierte aufgerufene Methode " .... imo, sollte Mono ihren Code reparieren. –