vb6 的on error goto 详细用法,删掉后会有什么影响?
PrivateSubLabel3_click(IndexAsInteger)DimiOnErrorGoToerr1Fori=0To30Label3(i).BorderSt...
Private Sub Label3_click(Index As Integer)
Dim i
On Error GoTo err1
For i = 0 To 30
Label3(i).BorderStyle = 0
Next i
If Label3(Index).BorderStyle = 1 Then
Label3(Index).BorderStyle = 0
Else
Label3(Index).BorderStyle = 1
End If
selectdate = Index + 1
Dim month1, day1, year1, date1
day1 = selectdate
month1 = cbomonth.ListIndex + 1
year1 = cboyear.ListIndex + 1960
date1 = (Str(month1) + "/" + Str(day1) + "/" + Str(year1))
Dim r
r = Weekday(date1)
If r = 1 Then
Text2.Text = "星期日"
ElseIf r = 2 Then
Text2.Text = "星期一"
ElseIf r = 3 Then
Text2.Text = "星期二"
ElseIf r = 4 Then
Text2.Text = "星期三"
ElseIf r = 5 Then
Text2.Text = "星期四"
ElseIf r = 6 Then
Text2.Text = "星期五"
Else
Text2.Text = "星期六"
End If
Text1.Text = Format(date1, "long date")
err1:
If Err = 0 Then Exit Sub
If Err = 13 Then
selectdate = selectdate - 1
Exit Sub
End If
End Sub 谁能帮我解释一下这部分on error goto 的详细意思,如果不用on error goto ,用别的语句能完成么? 展开
Dim i
On Error GoTo err1
For i = 0 To 30
Label3(i).BorderStyle = 0
Next i
If Label3(Index).BorderStyle = 1 Then
Label3(Index).BorderStyle = 0
Else
Label3(Index).BorderStyle = 1
End If
selectdate = Index + 1
Dim month1, day1, year1, date1
day1 = selectdate
month1 = cbomonth.ListIndex + 1
year1 = cboyear.ListIndex + 1960
date1 = (Str(month1) + "/" + Str(day1) + "/" + Str(year1))
Dim r
r = Weekday(date1)
If r = 1 Then
Text2.Text = "星期日"
ElseIf r = 2 Then
Text2.Text = "星期一"
ElseIf r = 3 Then
Text2.Text = "星期二"
ElseIf r = 4 Then
Text2.Text = "星期三"
ElseIf r = 5 Then
Text2.Text = "星期四"
ElseIf r = 6 Then
Text2.Text = "星期五"
Else
Text2.Text = "星期六"
End If
Text1.Text = Format(date1, "long date")
err1:
If Err = 0 Then Exit Sub
If Err = 13 Then
selectdate = selectdate - 1
Exit Sub
End If
End Sub 谁能帮我解释一下这部分on error goto 的详细意思,如果不用on error goto ,用别的语句能完成么? 展开
展开全部
VB6的On Error语句用于启动一个错误处理程序并指定该子程序在一个过程中的位置;也可用来禁止一个错误处理程序。删除它则任何运行时错误都是致命的;也就是说,结果会导致显示错误信息并中止运行。
On Error 语句,启动一个错误处理程序并指定该子程序在一个过程中的位置;也可用来禁止一个错误处理程序。
On Error 语句示例
本示例先使用 On Error GoTo 语句在一个过程中指定错误处理的代码所在。本示例中,试图删除一已经打开的文件从而生成的错误码为 55。这个错误将由示例中的错误处理程序码来处理,处理完後,控制会回到发生错误的语句处。On Error GoTo 0 语句关闭错误陷阱。然后 On Error Resume Next 语句用来改变错误陷阱,以便发觉下一个语句产生的错误的范围。请注意示例中使用 Err.Clear 在错误处理完後,清除 Err 对象的属性。
Sub OnErrorStatementDemo()
On Error GoTo ErrorHandler ' 打开错误处理程序。
Open "TESTFILE" For Output As #1 ' 打开输出文件。
Kill "TESTFILE" ' 试图删除已打开的文件。
On Error Goto 0 ' 关闭错误陷阱。
On Error Resume Next ' 改变错误陷阱。
ObjectRef = GetObject("MyWord.Basic") ' 试图启动不存在
' 的对象
'检查可能发生的 Automation 错误。
If Err.Number = 440 Or Err.Number = 432 Then
' 告诉用户出了什么事。然后清除 Err 对象。
Msg = "There was an error attempting to open the Automation object!"
MsgBox Msg, , "Deferred Error Test"
Err.Clear ' 清除 Err 对象字段。
End If
Exit Sub ' 退出程序,以避免进入错误处理程序。
ErrorHandler: ' 错误处理程序。
Select Case Err.Number ' 检查错误代号。
Case 55 ' 发生“文件已打开”的错误。
Close #1 ' 关闭已打开的文件。
Case Else
' 处理其他错误状态 . . .
End Select
Resume ' 将控制返回到产生错误的语句。
End Sub
展开全部
on error goto 是如果产生错误则跳到需要跳转的地方,删掉后可能会不能正确运行
还有一种语句是直接跳过错误继续执行下一句,代码是
On Error Resume Next,如果没有跳转的必要,可以使用这句,但要慎用
还有一种语句是直接跳过错误继续执行下一句,代码是
On Error Resume Next,如果没有跳转的必要,可以使用这句,但要慎用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果程序执行中遇到语法或者不可预期的错误,就跳转到err1这一行,从这一行往下面继续执行。异常处理语句还有on error resume next .当遇到错误,执行下面一行。on error goto 0 、禁止当前过程中任何已启动的错误处理程序。懂吧!就是遇到时候怎么处理,往哪里跳转执行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
分析了你的代码是选择一个日期作为取得星期的名称。你使用数组标签给点击作为选择是很方便的方法,但是多余了许多无意义的运算代码,而且这个过程里几乎是没需要使用到on error的处理语句。
Private Sub Label3_Click(Index As Integer)
Dim i As integer
For i = 0 To 30
Label3(i).BorderStyle = 0
Next i
Label3(Index).BorderStyle = 1
Dim month1, day1, year1, date1
day1 = Label3(Index).Caption
'以下不明白你为何取ListIndex,而不直接取得使用者点击挑选的年月名称?
' ----月--------------
'month1 = cbomonth.ListIndex + 1 ‘如果使用者没有选择点击ListIndex是 -1
'month1 = cbomonth.List(cbomonth.ListIndex)
'使用前2个方法需要确认使用者有点击动作才不会出错
month1 = cbomonth.Text ‘这种方式妥当,一般载入窗体时会设置有默认值
' ---年---------------
'year1 = cboyear.ListIndex + 1960
'year1 = cboyear.List(cboyear.ListIndex)
'使用前2个方法需要确认使用者有点击动作才不会出错
year1 = cboyear.Text ‘这种方式妥当,一般载入窗体时会设置有默认值
' ------------------
'虽然 + 没有错,但是如果不是数值的运算,尽量习惯使用 & 做为合并字串的方式
date1 = Str(month1) & "/" & Str(day1) & "/" & Str(year1)
'如果上一行没能正确显示,可以换成下一行试试
' date1 = cStr(year1) & "-" & cStr(month1) & "-" & cStr(day1)
' 取得星期 ?
Text2.Text = WeekdayName(Weekday(date1)) '中文星期 ?的函数
Text1.Text = Format(date1, "long date")
End Sub
'这是一个能预期知道错误点的过程,使用ON ERROR错误处理语句是多余。
Private Sub Label3_Click(Index As Integer)
Dim i As integer
For i = 0 To 30
Label3(i).BorderStyle = 0
Next i
Label3(Index).BorderStyle = 1
Dim month1, day1, year1, date1
day1 = Label3(Index).Caption
'以下不明白你为何取ListIndex,而不直接取得使用者点击挑选的年月名称?
' ----月--------------
'month1 = cbomonth.ListIndex + 1 ‘如果使用者没有选择点击ListIndex是 -1
'month1 = cbomonth.List(cbomonth.ListIndex)
'使用前2个方法需要确认使用者有点击动作才不会出错
month1 = cbomonth.Text ‘这种方式妥当,一般载入窗体时会设置有默认值
' ---年---------------
'year1 = cboyear.ListIndex + 1960
'year1 = cboyear.List(cboyear.ListIndex)
'使用前2个方法需要确认使用者有点击动作才不会出错
year1 = cboyear.Text ‘这种方式妥当,一般载入窗体时会设置有默认值
' ------------------
'虽然 + 没有错,但是如果不是数值的运算,尽量习惯使用 & 做为合并字串的方式
date1 = Str(month1) & "/" & Str(day1) & "/" & Str(year1)
'如果上一行没能正确显示,可以换成下一行试试
' date1 = cStr(year1) & "-" & cStr(month1) & "-" & cStr(day1)
' 取得星期 ?
Text2.Text = WeekdayName(Weekday(date1)) '中文星期 ?的函数
Text1.Text = Format(date1, "long date")
End Sub
'这是一个能预期知道错误点的过程,使用ON ERROR错误处理语句是多余。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询