【问题标题】:Inside of the Try block doesnt return anythingTry 块内部不返回任何内容
【发布时间】:2017-10-21 15:53:49
【问题描述】:

我正在尝试 html-scraping 以获得乐趣,我的问题是。 这个 Response.write() 方法在 IDE 的 try catch 块内部工作。 但它不会返回服务器上的 Response.write() 方法。

try
          {
            if (x == 1)
            {
                Url = "https://www.**********.com/" + arama;
            }
            else
            {
                Url = "https://www.**********.com/" + arama + "?pagingOffset=" + y;
            }

            doc = web.Load(Url);
            liste = doc.DocumentNode.SelectNodes("//*[@id=\"searchResultsTable\"]/tbody/tr[" + i + "]/td[1]/a")[0].Attributes["href"].Value;
            Url = "https://www.**********.com" + liste;
            doc = web.Load(Url);
            liste = doc.DocumentNode.SelectNodes("//*[@id=\"classifiedDetail\"]/div[1]/div[2]/div[3]/div[1]/div/div[1]/h5")[0].InnerText;
            liste2 = doc.DocumentNode.SelectNodes("//*[@id=\"phoneInfoPart\"]/li/span[1]")[0].InnerText;
            count++;
            liste = liste.ToUpper();
            Response.Write(count + " - " + liste + " Tel: " + liste2 + "</br>");
        }
        catch { }

简而言之,这个网络应用程序使用 HtmlAgilityPack 通过其 xpath 查找 html 值,我使用 Response.write() 返回内部值,而 innertext() 为我将其转换为字符串。

【问题讨论】:

  • 首先要避免空的 catch 块,它们会默默地吞下任何异常。我强烈怀疑抛出了一个异常,但你不知道是什么,因为你的代码实际上是在说“我不在乎这是否不起作用。没有人需要知道出了什么问题。”
  • 它说 =“对象引用未设置为对象的实例。”
  • 对,所以你得到了 NullReferenceException。您应该查看堆栈跟踪以找出原因,并阅读stackoverflow.com/questions/4660142/…
  • 当网站在另一个主机上时,我如何读取堆栈跟踪。因为当我使用 ide 时,我没有收到此错误。
  • 好吧,你发现 message 是“对象引用未设置为对象的实例” - 所以你得到了 那个信息,只需让它向您显示整个异常,而不仅仅是消息。

标签: c# .net web-scraping try-catch html-agility-pack


【解决方案1】:

也许您在 web.Load 调用中遇到了一个异常并且它击中了您的空捕获?尝试将 Response.Write 放入只写出“BOOM”的捕获中。或者更好的是,写出异常。

【讨论】:

  • 原来是 try catch 完美地工作,只是不返回 response.write 方法。我需要打印这些值,但是如何打印?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 2019-04-06
  • 2012-02-15
  • 2020-09-07
相关资源
最近更新 更多