C# HtmlAgilityPack错误处理-捕获异常

C# HtmlAgilityPack错误处理-捕获异常,c#,error-handling,html-agility-pack,C#,Error Handling,Html Agility Pack,我正在尝试确定如何捕获异常。我得到的是对象引用未设置为对象实例。 是否有更好的方法捕获异常并向用户显示异常原因 baseUrl = "my url...."; try { HtmlWeb hw = new HtmlWeb(); HtmlDocument docSRC = hw.Load(baseUrl); //if (docSRC.DocumentNode.SelectNode

我正在尝试确定如何捕获异常。我得到的是
对象引用未设置为对象实例。

是否有更好的方法捕获异常并向用户显示异常原因

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

我想不出任何其他方法来处理异常。但是,如果你能首先避免这个异常,那就更好了

查看发布的代码片段,
NullReferenceException
可以在没有
src
属性的
link
时抛出(这部分
att.Value
将抛出异常,因为在这种情况下
att
null

您可以使用
GetAttributeValue()
方法来避免异常,例如:

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

以下是我能够解决的问题:

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

                }
            }

希望这能帮助其他人

谢谢你给了我主意。。。。我在foreach循环行
foreach(docSRC.DocumentNode.SelectNodes(“//img/@src”)中的HtmlNode链接)上得到了错误。
如果HtmlAgilityPack找不到元素,我希望它只返回null。这比预先检查元素是否存在或引发异常要容易得多。