-2

有时 htmlDocument.Load(url) 会给我这个例外:

Unhandled Exception: System.IO.IOException: Unable to read data from the transpo
rt connection: An existing connection was forcibly closed by the remote host. --

不幸的是,我无法捕捉到这个异常。

我捕获的异常如下:

try
{
   page = web.Load(url + Convert.ToString(i + 1) + "/");
}
catch (ArgumentException ex)
{
  //do something
}

当我运行程序时,异常仍然在写入的行停止程序:

page = web.Load(url + Convert.ToString(i + 1) + "/");

有人能帮我吗?

4

3 回答 3

2

只是提供另一种解决方案。你的 catch 是为了 anArgumentException并且只会抓到s ArgumentException ... 抛出的是 a IOException

如果您只想捕获try 块引发的所有异常,可以将代码更改为以下内容:

try
{
   page = web.Load(url + Convert.ToString(i + 1) + "/");
}
catch (Exception ex)
{
    //do something
}

如果您想为每个异常做一些不同的事情:

try
{
   page = web.Load(url + Convert.ToString(i + 1) + "/");
}
catch (ArgumentException ex)
{
    //do something about ArgumentException
}
catch (System.IO.IOException ex) 
{
    //do something about IOException
}
于 2013-08-27T19:59:02.583 回答
1

这是因为抛出的异常是 a System.IO.IOException,而您正在捕获一个ArgumentException.

将您的代码更改为:

try
{
   page = web.Load(url + Convert.ToString(i + 1) + "/");
}
catch (System.IO.IOException ex)
{
  //do something
}
于 2013-08-27T19:49:23.613 回答
1

您的代码仅捕获ArgumentExceptions。

如果你想捕捉其他类型的异常,你需要改变它。

于 2013-08-27T19:49:36.103 回答