在输出窗口的exe中输入'System.IndexOutOfRangeException'的第一次机会异常

时间:2015-03-27 05:49:17

标签: c# winforms visual-studio-2010 first-chance-exception

我正在运行一个Windows表单程序,它在另一个线程上完成所有工作。一段时间后,UI冻结并停止响应。后台线程仍然正常工作(我可以从完成的工作中看到)。

我遇到了这个例外:

  

类型' System.IndexOutOfRangeException'的第一次机会异常。在exe

当我追踪异常线并再次运行时,我得到了这个:

  

线程<No Name>(0x19b4)已退出,代码为0(0x0)。

代码行运行正常,但它提供System.IndexOutofRangeException

MatchCollection tempcollection = Regex.Matches(document,
        "(?<data>More information from(.|\\r|\\n)*?</div>)");
if (tempcollection.Count == 0)
{
    return Result;
}
string ThisDiv = tempcollection[0].Groups["data"].Value;
// The above line shows exception in Output Window,
// otherwise it works fine and moves to next line.

更新:我已经看到输出提供了有关每个异常的信息,无论是否被捕获,我认为这是冻结用户界面的原因,但事实并非如此。

  1. 请帮我摆脱这个例外。
  2. 是否为未经检查的例外;我在学习中了解到.Net没有未经检查的异常。请澄清这一点以便我理解。

1 个答案:

答案 0 :(得分:2)

正则表达式可能没有返回组值和 tempcollection [0] .Groups [&#34; data&#34;]可能没有设置,因此组上的索引器会失败,你可能会得到一个索引超出范围异常尝试在尝试获取之前添加一个null检查它的价值。

尝试验证输入数据的正则表达式,以验证上述任何正则表达式工具都是如此。