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。这比预先检查元素是否存在或引发异常要容易得多。