Estoy trabajando en un desarrollo de Framework, lo que significa que requieren una metodología de codificación realmente sólida.¿Qué excepción lanzar cuando un método intenta usar un campo que puede ser nulo?
Tengo un problema donde no sé qué clase derivada de System.Exception necesito arrojar. Básicamente, el caso es cuando tengo una clase con campos que pueden ser inicializados opcionalmente por el constructor y que tienen métodos que usan estos campos. ¿Qué excepción debo lanzar si el usuario no inicializó estos campos? (Lo que significa que son nulos)
Aquí se muestra un ejemplo:
public class MyConnection
{
private Uri endpointUri;
public Uri EndpointUri
{
get
{
return this.endpointUri;
}
set
{
this.endpointUri = value;
}
}
public MyConnection()
{
}
public MyConnection(Uri endpointUri)
{
this.endpointUri = endpointUri;
}
public FileStream GetFile()
{
if (this.endpointUri != null)
{
// My doer methods
}
else
{
throw new TheExceptionINeedToThrow("endpointUri", ...);
}
}
}
Tenga en cuenta que he estado leyendo el "Framework Design Guidelines" capítulo entero en relación con el manejo de excepciones y tirar y que yo no encontré ninguna solución ajustada este caso exacta . O tal vez malentendí algo ...
Gracias por su ayuda.
EDITAR: El hecho de que proporciono un constructor vacío parece un poco confuso con respecto a mi problema, pero es completamente voluntario. En algunos objetos que tienen que cumplir con un rango de diferentes estados que no se pueden duplicar en múltiples objetos, a veces es útil.
Observe el constructor predeterminado explícito, que (probablemente) implica que lo hace. – SLaks
@SLaks: Lo he notado, pero estoy cuestionando su sabiduría. –
¡Me estoy inclinando por deferencia a la respuesta más completa! –