¿Cuál es el más correcto? Como sugiere el comentario de Kirk: depende. A veces, un null
tiene un sentido lógico y, a veces, una excepción es más adecuada si no es razonable. Una cosa que trato de hacer es pensar "¿Llamar al GetCurrentItem
es una falla lógica o algo seguro?"
Si no se puede llamar al GetCurrentItem
cuando no hay ninguno, lanzar una excepción es el curso correcto. Por ejemplo, si su colección tiene una propiedad HasCurrent
o IsEmpty
donde alguien podría examinar el resultado antes de llamar al GetCurrentItem
, entonces deberían "saber mejor". Pero si el elemento actual es null
es una forma lógica correcta de utilizar su clase, entonces, por supuesto, concéntrela de esa manera. De cualquier manera, documentaría el comportamiento en los comentarios del código para que los usuarios conozcan el comportamiento esperado.
Lo diré sin embargo, exponer la excepción ArgumentOutOfRange
puede estar sangrando detalles de implementación. Es decir, si el usuario de esta clase no tiene idea de que la estructura interna es una matriz o List<T>
, no desangre esa excepción, sino tómala, envuélvala y arroje una más significativa (personalizada o similar InvalidOperationException
).
ya que no está pasando realmente directamente en una discusión, ellos recibiendo una excepción ArgumentOutOfRange
podría ser confuso :-)
¿Qué es la API correcta: '' Enumerable.Single' o Enumerable.SingleOrDefault'? (respuesta: depende) –