Digamos que tengo un método:
public void DoSomething(ISomeInterface someObject)
{
if(someObject == null) throw new ArgumentNullException("someObject");
someObject.DoThisOrThat();
}
Me han entrenado para creer que lanzar el mensaje ArgumentNullException
es "correcto" pero un error de "Referencia de objeto no establecido en una instancia de un objeto" significa que tengo un error.
¿Por qué?
Sé que si estaba almacenando la referencia en caché someObject
y la estaba usando más tarde, entonces es mejor verificar la nulidad cuando se pasa, y fallar temprano. Sin embargo, si estoy desreferenciando en la siguiente línea, ¿por qué se supone que debemos hacer la verificación? Va a lanzar una excepción de una manera u otra.
Editar :
Se me acaba de ocurrir ... ¿el miedo al nulo desreferenciado proviene de un lenguaje como C ++ que no lo comprueba por usted (es decir, solo intenta ejecutar algún método en la ubicación de memoria cero + desplazamiento del método)?