2012-09-16 129 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的全部,即使它是所有顯示一個消息框除外。它可以是一個真正的頭餅刷時初始化的一部分,並沒有運行,那麼事情的形式爲代碼後崩潰。 –