HtmlAgilityPack Error Handling - l'eccezione che cattura

c# error-handling html-agility-pack

Domanda

Sto cercando di determinare come rilevare l'eccezione che sto ottenendo è il Object reference not set to an instance of an object.

esiste un modo migliore per rilevare l'eccezione e mostrare all'utente la causa dell'eccezione?

       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....
        }

Risposta popolare

Non riesco a pensare a nessun altro modo di gestire l'eccezione. Ma sarà meglio se puoi evitare l'eccezione in primo luogo.

Osservando lo snippet di codice pubblicato, NullReferenceException potrebbe essere generata quando c'è un link che non ha l'attributo src (questa parte att.Value genera un'eccezione perché att è null in questo caso).

È possibile utilizzare il metodo GetAttributeValue() per evitare l'eccezione, ad esempio:

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



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché