On Error GoTo:如果没有错误,如何避免GoTo



我正在使用VB.Net开发应用程序,在使用On Error GoTo时,它在某个点上卡住了,与On Error GoTo相关的标签将一直执行,即使它们在块中没有错误。这里的代码片段是:

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim rnd As Random = New Random
        On Error GoTo label
        Dim n, array(10) As Integer
        For i As Integer = 10 To 0 Step -2
            n = rnd.Next(9)
            array(i) = 10 / n
        Next
label:  MsgBox("Exception Occur")
    End Sub

我的目标是在执行过程中发生任何错误时,将错误消息显示为异常发生。但它一直在打印。有人能提出一个解决方案吗。

尽量避免代码中的任何On Error GoTo语句。这可能会引起很多麻烦,这只是一种糟糕的做法,而且看起来不太好。(意大利面条代码)相反,你可以使用一个简单的Try。。。Catch语句。下面是一个简短的例子:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   Dim rnd As Random = New Random
   Try
     Dim n, array(10) As Integer
     For i As Integer = 10 To 0 Step -2
       n = rnd.Next(9)
       array(i) = 10 / n
     Next
  Catch ex as Exception
     MsgBox("Exception Occur")
  End try
End Sub

Label总是被执行的,因为它是在For之后要执行的下一行,它们在您的代码中没有任何东西可以破坏这种正常的流,所以您需要在label之前包含Exit Eub来防止这种情况。即,代码为:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim rnd As Random = New Random
    On Error GoTo label
    Dim n, array(10) As Integer
    For i As Integer = 10 To 0 Step -2
        n = rnd.Next(9)
        array(i) = 10 / n
    Next
    Exit Sub
 label:  MsgBox("exception")
End Sub

在使用该CCD_ 8时将成为继CCD_ 9之后要执行的下一行。因此它将帮助您从Sub 中脱颖而出