2011-05-03 56 views
3

我在一个解析器中使用HTMLAgilityPack,我已经在服务器上,但我遇到了一个我正在解析的网站的问题:每天早上6点左右,他们往往会关闭他们的服务器进行维护,这会抛出HTMLWeb的Load()方法,并导致我的应用程序崩溃。你们中的任何一个人是否有更安全的将网站加载到HTMLAgilityPack的方式,或者某种方式在C#中执行错误检查以防止我的应用程序崩溃? (我的C#有点生疏)。这是我现在的代码:HTMLAgilityPack和加载超时

HtmlWeb webGet = new HtmlWeb(); 
HtmlDocument document = webGet.Load(dealsiteLink); //The Load() method here stalls the program because it takes 1 or 2 minutes before it realizes the website is down 

谢谢!

+1

“阻止我的应用程序崩溃” - 也许是一个try/catch是为了? – 2011-05-03 23:35:02

回答

3

刚好围绕呼叫用一个try-catch:

HtmlWeb webGet = new HtmlWeb(); 

HtmlDocument document; 
try 
{ 
    document = webGet.Load(dealsiteLink); 
} 
catch (WebException ex) 
{ 
    // Logic to retry (maybe in 10 minutes) goes here 
} 

确切的重试逻辑将取决于您的应用程序是如何组织的 - 你可能会发现,try-catch块需要放置上涨的应用程序需要比这更高。

我认为WebException是您应该捕捉的异常,但我无法确定,因为找不到文档。你可能会发现你也需要赶上TimeoutException