Я пытаюсь определить, как поймать исключение, что я получаю, это 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....
}
Я не могу думать о другом способе обработки исключений. Но будет лучше, если вы сможете избежать исключения в первую очередь.
Если вы просмотрели фрагмент кода, NullReferenceException
может быть NullReferenceException
, если есть link
, у которой нет атрибута src
(эта часть att.Value
будет 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", "");