我正在使用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
中脱颖而出