Vb.net Sub过早结束了吗?
这段代码永远不会到达第二个for,我可以在结尾处放置一个断点,如果在那里,它会触发_rows.Count,就像它应该的那样,但是如果在第二个for或之后有断点,它就永远不会到达。没有错误消息,程序没有冻结或任何东西,其行为与我所做的完全相同:Vb.net Sub过早结束了吗?,vb.net,Vb.net,这段代码永远不会到达第二个for,我可以在结尾处放置一个断点,如果在那里,它会触发_rows.Count,就像它应该的那样,但是如果在第二个for或之后有断点,它就永远不会到达。没有错误消息,程序没有冻结或任何东西,其行为与我所做的完全相同: For i As Integer = 0 To _rows.Count If (_rows(i).LeftOffset > largestOffset) Then largestOffset = _ro
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-1。循环的最后一次循环将失败,出现IndexOutOfRangeException
我发现在VB.net中的一些地方,特别是在Form_Load中,调试器不会显示错误,Sub只是静静地退出,程序继续。但是,它周围的try…catch块将捕获异常。您尝试了_rows.count-1?当您超出上限时,可能会抛出异常。谢谢,是的,它刚刚退出,我想这是调试器的错误(或功能)。我不认为它只是调试器-我认为它在运行时也适用,这里的错误不会传播到任何其他异常处理程序。我现在习惯于在任何复杂表单的整个表单加载中添加一个try…catch,即使它所做的只是在消息框中显示异常。当初始化的一部分没有运行,然后在表单代码中出现崩溃时,这可能是一个真正的难题。
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