Control de errores HtmlAgilityPack - excepción de captura

c# error-handling html-agility-pack

Pregunta

Estoy tratando de determinar cómo detectar la excepción. Lo que estoy obteniendo es una Object reference not set to an instance of an object.

¿Hay alguna forma mejor de detectar la excepción y mostrarle al usuario la causa de la excepción?

       baseUrl = "my url....";
        try
        {
            HtmlWeb hw = new HtmlWeb();
            HtmlDocument docSRC = hw.Load(baseUrl);

            //if (docSRC.DocumentNode.SelectNodes("//img/@src").Count > 0)
            //{

            //}

            foreach (HtmlNode link in docSRC.DocumentNode.SelectNodes("//img/@src"))
            {
                HtmlAttribute att = link.Attributes["src"];
                srcTags.Add(att.Value);

            }
        }
        catch (Exception ex)
        {
            //catch reason for exception....
        }

Respuesta popular

No puedo pensar en ninguna otra manera de manejar la excepción. Pero será mejor si puedes evitar la excepción en primer lugar.

Al ver el fragmento de código publicado, NullReferenceException se puede lanzar cuando hay un link que no tiene atributo src (esta parte att.Value lanzará una excepción porque att es null en este caso).

Puede usar el método GetAttributeValue() para evitar la excepción, por ejemplo:

//here when the attribute not found, the 2nd parameter will be returned 
//(empty string in this case)
var src =  link.GetAttributeValue("src", "");


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué