我有下面的代码:
foreach (var taskId in taskIdList)
{
document = web.Load(path);
try
{
nodes = document.DocumentNode.SelectNodes("//td")
.Where(x => x.Attributes["title"].Value.Contains("Log.html")).ToArray();
}
catch (ArgumentNullException)
{
Console.WriteLine("ArgumentNullException in TaskId: " + taskId);
}
foreach (HtmlNode item in nodes)
{
try
{
downloadLinkList.Add(item.SelectSingleNode(".//a").Attributes["href"].Value);
}
catch(NullReferenceException)
{
Console.WriteLine("NullReferenceException in TaskId: " + taskId);
}
}
}
联机System.NullReferenceException:DownloadLinkList.Add(Item.SelectSingleNode(“.//a”).Attributes[“href”].Value);
怎样才能妥善处理,让它不再崩溃?我的印象是,它应该只是跳过前面。
使用break
也不是一个选项,因为我仍然需要没有所需的href
的某个页面的信息。
try/catch
机制不会阻止异常发生。它将防止它传播/膨胀。
try
{
downloadLinkList.Add(item.SelectSingleNode(".//a").Attributes["href"].Value);
}
catch(NullReferenceException)
{
Console.WriteLine("NullReferenceException in TaskId: " + taskId);
}
Console.WriteLine("Hello");
如果没有try/catch
机制,将永远不会打印“hello”,因为异常中断了正常的代码流。通过捕获异常,您可以对异常执行某些操作,其余的代码可以继续。
但IDE有可能中断执行以显示异常(取决于您的设置),但您只需单击“continue”(F5),它将继续运行到控制台。WriteLine
我正尝试在出现连接错误时添加一个控件。我的目的是通过捕捉异常来阻止程序抛出异常。 但它会在控制台中打印: 抱歉,如果我打印了太多的StackTrace... 我想知道,如果我不打印出stacktrace,我如何使异常消失?谢谢:)
当我在node中创建一个异步函数并使用await时,我正在使执行等待一个承诺解析(可以是一个解析或一个拒绝),我所做的是在try/catch块中放入一个await承诺,并在承诺拒绝的情况下抛出一个错误。问题是,当我在try/catch块内调用这个异步函数来捕获错误时,我会得到一个UnhandledPromiserEjectionWarning。但是使用await的全部意义并不是等待承诺解决并返回它
亲爱的Selenium Webdriver专家, 当从http://www.domain.com.au/property/for-sale/house/nsw/auburn/?adid=2010111460对“/html/body/form/div[2]/div[4]/div[1]/div/div/div[1]/a”执行XPath查询时,我(在if语句上)遇到以下异常: 下面是发生此异常的代码段:
我正在做一个编程项目,并不断得到如下所示的错误。 关联文本文件
问题内容: 好的,这可能是一个非常愚蠢的问题,但是我发现关于此的PHP文档以及一些Internet搜索并没有使我对此有所任何了解。 什么时候应该使用try-catch块来改进我的应用程序? 我读过有人说我们应该仅使用try- catch块来防止致命错误。我读过别人的话说,我们应该只在意外错误上使用它(等什么?意外?如果它们是意外错误,如何使用try- catch防止它们出现?我应该将所有应用程序代