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

时间:2014-08-30 09:38:31

标签: vb.net exception

我正在使用 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 相关联的标签,即使它们是块中没有错误。这里的代码片段是:

{{1}}

我的目标是在执行时发生任何错误时将错误消息显示为异常发生。但它会一直打印。任何人都可以建议一个解决方案。

2 个答案:

答案 0 :(得分:5)

尽量避免在代码中的任何位置使用On Error GoTo语句。它可能会导致很多麻烦,这只是一种不好的做法,而且看起来不太好。(Spaghetti code)相反,你可以使用一个简单的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

答案 1 :(得分:0)

始终执行

Label,因为它是For之后要执行的下一行,它们在您的代码中不会破坏此正常流程,因此您需要包含Exit Eublabel之前阻止这种情况。即,代码将是:

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

使用此Exit Sub将成为For之后执行的下一行。所以它会帮助你从Sub

出来