错误处理-捕获异常

本文关键字:捕获异常 处理 错误 | 更新日期: 2023-09-27 18:03:40

我正试图确定如何捕获异常,我得到的是Object reference not set to an instance of an object.

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

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

错误处理-捕获异常

我想不出其他处理异常的方法。但是如果你能从一开始就避免这个异常,那就更好了。

查看张贴的代码片段,当link没有src属性时,NullReferenceException可能被抛出(这部分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);
                }
            }

希望这对其他人有帮助!