嵌套循环场景,在调试模式下获取异常之前的值 - Visual Studio

时间:2009-07-17 19:28:04

标签: .net visual-studio visual-studio-2008 visual-studio-2005

如果我有一个嵌套循环场景,我正在调试模式中进入它。例如:

for (int i = 0; i < listTest.Count; i++)
{
   for (int j = 0; j < anotherList.Count; j++)
   {
      //Some logic that throws an exception
   }
}

在异常发生之前,我有办法知道i, j, listTest[i] and anotherLIst[j]的值吗?如果计数值很高,循环循环并在异常发生之前观察这些值是不切实际的

3 个答案:

答案 0 :(得分:2)

首先,您可以更改VS2008中的设置以在抛出异常时中断:

Debug >> Exception >> Common Language Runtime Exceptions Dialog

这将导致调试器停止在生成违规异常的代码行上,ij应该在此范围内。

你也可以在循环之外提升循环变量i和j;像这样:

int i, j;
for (i = 0; i < listTest.Count; i++)
{
   for (j = 0; j < anotherList.Count; j++)
   {
      //Some logic that throws an exception
   }
}

答案 1 :(得分:1)

使用try / catch块包围第二个循环内的所有代码。抓住异常并重新抛出它。将断点放在catch中的行上。发生异常时,i和j应该是异常时的值。

答案 2 :(得分:1)

您可以设置Visual Studio以中断所有异常。在Visual Studio中转到Debug-&gt;菜单中的例外。公共语言运行时异常抛出异常时的中断检查。这将使它在没有捕获的情况下在这里打破。

注意:您可能不会一直想要这个,如果您使用的逻辑可能会抛出异常,那么您应该使用try / catch。