如果我有一个嵌套循环场景,我正在调试模式中进入它。例如:
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]
的值吗?如果计数值很高,循环循环并在异常发生之前观察这些值是不切实际的
答案 0 :(得分:2)
首先,您可以更改VS2008中的设置以在抛出异常时中断:
Debug >> Exception >> Common Language Runtime Exceptions Dialog
这将导致调试器停止在生成违规异常的代码行上,i
和j
应该在此范围内。
你也可以在循环之外提升循环变量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。