2012-09-16 93 views
2
For i As Integer = 0 To _rows.Count 
     If (_rows(i).LeftOffset > largestOffset) Then 
      largestOffset = _rows(i).LeftOffset 
     End If 
    Next i 

    For i As Integer = 0 To _rows.Count 

这段代码从来没有得到第二个,我可以把一个断点放在结束如果在那里,它触发_rows.Count喜欢它应该,但如果有第二个断点或任何之后它永远不会到达。没有错误消息,该程序不冻结或任何东西,它的行为就好像我做了:Sub正在过早结束?

For i As Integer = 0 To _rows.Count 
     If (_rows(i).LeftOffset > largestOffset) Then 
      largestOffset = _rows(i).LeftOffset 
     End If 
    Next i 

    Return 

    For i As Integer = 0 To _rows.Count 
+1

你试过_rows.count -1?当你高于上限时,可能会抛出异常。 –

回答

3

应该_rows.Count-1作为上限。最后一次循环将失败并出现IndexOutOfRangeException。

我发现,在VB.net几个地方,尤其是在的Form_Load,错误调试器并不露面,和小组只是默默退出,并且程序继续进行。然而,围绕它的try ... catch块会捕获异常。

+0

谢谢,是啊,刚刚退出,我想这是调试器的错误(或功能)。 –

+0

我不认为这只是 - 我想这也适用于运行时的错误在这里不会传播到其他任何异常处理程序调试器。我现在在加上一试的好习惯赶上周围那么任何复杂的形式在Form_Load的全部,即使它是所有显示一个消息框除外。它可以是一个真正的头饼刷时初始化的一部分,并没有运行,那么事情的形式为代码后崩溃。 –