Tengo una propiedad de cadena que tiene un requisito de longitud máxima porque los datos están vinculados a una base de datos. ¿Qué excepción debo lanzar si la persona que llama intenta establecer una cadena que excede esta longitud?¿Qué excepción lanzar de un organizador de propiedades?
Por ejemplo, este código C#:
public string MyProperty
{
get
{
return _MyBackingField;
}
set
{
if (value.Length > 100)
throw new FooException("MyProperty has a maximum length of 100.");
_MyBackingField = value;
}
}
que considera ArgumentException
, pero simplemente no me parece bien. Técnicamente, es una función - MyProperty_set(string value)
- por lo que se puede crear un caso para ArgumentException
, pero no se está llamando como una función a los ojos del consumidor: está en el lado derecho de un operador de asignación.
Esta pregunta probablemente también podría extenderse para incluir todos los tipos de validación de datos realizados en los establecedores de propiedades, pero estoy particularmente interesado en el caso anterior.
Por cierto, mono lanza una excepción ArgumentException en este caso ... –
"ArgumentOutOfRangeException - La excepción que se produce cuando el valor de un argumento está fuera del rango de valores permitido definido por el método invocado " .... imo, Mono debería arreglar su código. –