2011-06-03 9 views
5

estoy trabajando en la obtención de las fuentes RSS de este modo:¿Excepción de captura, validación de entrada o ambas?

SyndicationFeed rss = SyndicationFeed.Load(XmlReader.Create(textBox1.Text)); 

XmlReader.Create() en este caso puede lanzar hasta 4 excepciones relacionadas con cosas como el parámetro siendo nulo, error 404, etc.

¿Debería Intentar validar el Uri (asegúrese de que no sea nulo, 404, doctype correcto, etc.) antes de llamar a esa línea o ¿debería manejar las excepciones? Sé que he leído en numerosas ocasiones en SO que las excepciones deben usarse para circunstancias verdaderamente excepcionales y estoy de acuerdo en que esto no parece cumplir ese requisito previo, pero parece más fácil manejar las excepciones.

Respuesta

4

La propiedad Text de una casilla de verificación nunca es nula, por lo que puede omitir esa. Compruebe manualmente todos los casos que son simples y no están relacionados con el proceso, como que la cadena está vacía y que Url es correcta y deja cosas más oscuras específicas de XML a la validación dentro del método Create. Entonces la respuesta es combinar ambos.

También, permítanme referirme una vez más a un blog post de Eric Lippert sobre excepciones. En su caso, pueden ocurrir excepciones molestas y exógenas, por lo que probablemente debería atraparlas. Pero asegúrate de que no ocurran los huesos de los huesos.

0

Dado que el lector y el intérprete de alimentación de sindicación validarán la entrada, realmente no hay necesidad de duplicar ese esfuerzo. Esto es especialmente cierto, ya que, para hacerlo correctamente, tendría que aceptar o rechazar exactamente los mismos documentos. Esto sería una loca duplicación de código.

Recomiendo solo manejar las excepciones.

0

Espero ver lo que otras personas dicen aquí, pero me parece que debe hacer el tipo de verificaciones que sabe que puede hacer con precisión: verifique el URI nulo, busque un URI completamente vacío, etc. Más allá de eso, deja que la llamada Crear controle la verificación y captes las excepciones. Supongo que los escritores de esa función saben cómo validarlo más a fondo que tú (¡sin intención de ofender!).

0

Si bien no soy un gurú de las mejores prácticas, creo que las excepciones deben ser excepciones (sí ...) No es solo una cuestión filosófica, sino también práctica. El manejo de excepciones tiene, la mayoría de las veces, un costo de rendimiento más alto que la comprobación de las causas de excepción.

Si quisiera ser filosófico, diría "Si no hay nada que puedas hacer sobre el problema, no intentes manejarlo". Por ejemplo, si desea escribir algo en un archivo, la comprobación del archivo existe, los permisos de archivos, etc. pueden ser problemáticos, y no puede hacer mucho al respecto si, por ejemplo, no puede acceder a la unidad de red. Si detecta la excepción que dice "Verifique si el archivo existe y que tiene los permisos adecuados", se ahorrará muchos problemas.

Cuestiones relacionadas