【发布时间】:2015-05-31 09:28:21
【问题描述】:
我正在运行一个 Windows 窗体程序,它在另一个线程上完成所有工作。一段时间后,UI 冻结并停止响应。后台线程仍然工作正常(我可以从完成的工作中看到)。
我遇到了这个异常:
exe 中“System.IndexOutOfRangeException”类型的第一次机会异常
当我跟踪异常行并再次运行它时,我得到了这个:
线程
<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.
更新:我已经看到输出提供了有关每个异常的信息,无论它是否被捕获,我认为这是冻结 UI 的原因,但事实并非如此。
- 请帮助我摆脱这个异常。
- 是否是未经检查的异常;我在研究中了解到 .Net 没有未经检查的异常。请澄清这一点,以便我理解。
【问题讨论】:
-
为什么不把 tempcollection[0].Groups["data"].Value 放在 if 语句 "if (tempcollection.Count != 0)" 中?如果计数为 0,"string ThisDiv = tempcollection[0].Groups["data"].Value;"将抛出“超出范围”异常。
-
@SormitaChakraborty 引发异常的是对 Count 本身的调用。我也遇到了同样的问题。
标签: c# winforms visual-studio-2010 first-chance-exception