he el siguiente escenario:forma elegante de manejar elemento no se encuentra en una colección en C#
- Tengo un bucle foreach que se repite a través de una colección, si se encuentra un artículo (en base a criterios como en el ejemplo a continuación), devolverá ese artículo.
Si no, ¿cuál es la forma más elegante para hacer frente a esta excepción. Tengo una nueva idea de arrojar nueva, pero creo que hay una manera más elegante.
Código es:
foreach (SPContentType type in sPContentTypeCollection)
{
if (type.Name == contentTypeName)
{
return type;
}
}
throw new NotImplementedException();
Como se puede ver, no es lo que yo llamaría un código legible. ¿Cómo puedo hacer que sea más fácil para el siguiente hombre mantener? En una nota lateral, hace lo que debería desde una perspectiva técnica.
supongo, no me pide la pregunta correctamente. Lo que me preocupa es el lanzamiento "colgado" directamente después de la parte de trabajo hecho. Casi se siente mal tener un lanzamiento allí (independientemente del tipo de excepción). Si el código llegó a este punto ... algo debe estar mal. ¿Es esto aceptable, o sería una mala práctica? –
@JL: Perfectamente aceptable, en mi opinión. Más agradable para usar LINQ en primer lugar cuando sea posible, por supuesto. Si crees que no es obvio por qué está ahí, siempre puedes usar un comentario, pero espero que la documentación del método lo aclare. –
Soy un fan de dejar que la persona que llama decida qué significan realmente los resultados. Si esto es algo muy malo el 100% del tiempo, adelante y lanza una excepción. De lo contrario, deje que la persona que llama decida si un resultado nulo garantiza el lanzamiento o no. ¿Qué tan fatal es si no puede encontrar su tipo? Si es una elección entre try..catch o null handling, tomaré un manejo nulo. Sin embargo, si necesita generar una excepción para el manejo externo, entonces sus manos están atadas ... –