第一篇:vb錯誤處理
Vb錯誤處理 出錯處理
(1)設(shè)置錯誤陷阱
On Error Resume Next
若出現(xiàn)錯誤,則將當前錯誤語句忽略,執(zhí)行下條語句。
On Error GoTo 語句標號
On Error GoTo 0 不進行任何處理
(2)編寫錯誤處理程序
Resume:接著錯誤的地方執(zhí)行,重試。
Resume Next:類似On Error Resume Next,忽略當前錯誤語句,執(zhí)行下一語句Resume <標號>:到標號那里去處理。
過程級、模塊級
節(jié)選:
Onerrorgoto標簽是放在錯誤發(fā)生之前,有效范圍是到此事件的結(jié)束,包括錯誤處理時發(fā)生的錯誤。(此時的錯誤一般是沒有想到的,故也沒有處理)所以要保證不要在錯誤處理的代碼中寫復(fù)雜的代碼。
OnErrorGotoErr_Normal
'一般代碼
sql= “insertinto......”
OnErrorGotoErr_Roll
adocn.BeginTrans
adocn.Executesqladocn.CommitTrans
OnErrorGotoErr_Normal
....Exitsub
Err_Normal:
'正常錯誤處理
ExitSub
vb6.0 遇到錯誤能不退出嗎
2012-1-25 20:04提問者: 咫·尺 | 瀏覽次數(shù):278次
比如遇到數(shù)據(jù)溢出啊等,彈出錯誤以后,就直接把程序關(guān)閉了,數(shù)據(jù)都沒保存,能彈出錯誤后,不關(guān)閉程序嗎?
滿意回答
插入以下代碼:
On Error Resume Next
即可。意思是,程序遇到錯誤不理會,繼續(xù)執(zhí)行。
或者使用GoTo,比如下面的代碼計算肯定是溢出的,但程序不會退出,不過會提示: On Error GoTo ToExit
Dim g, ErrNum As Boolean
g = 1
Do Until ErrNum
g = g * 1024
Loop
ToExit:
If Err.Number = 6 Then
Print “程序溢出,計算結(jié)果不準確”, g
Exit Sub
End If
或者使用以下代碼,可以完全顯示計算過程:
Dim WithEvents List As ListBox
Private Sub Form_Load()
On Error GoTo ToExit
Dim g, ErrNum As Boolean
g = 1
Set List = Me.Controls.Add(“VB.ListBox”, “List”)
With List
.Left = 0
.Top = 0
.Width = Form1.Width490
.Visible = True
End With
Do Until ErrNum
g = g * 1024
List.AddItem g
Loop
ToExit:
If Err.Number = 6 Then
List.AddItem “程序溢出,計算結(jié)果不準確” & g
Exit Sub
End If
End Sub
追問
是不是要在每一個容易出錯的sub里面都要這樣加一下?有沒有整體設(shè)置一下或者寫代碼的?每個sub都寫一下也挺麻煩的回答
首先,第一行是每個里邊都需要有的,有了這一行,才會執(zhí)行錯誤跳轉(zhuǎn)。
比如上邊的第二段代碼也可以這樣寫:這樣在每段容易出錯的過程中,加上第一個的On Error GoTo ToExit和最后一行的ToExit: MsgBox “程序出現(xiàn)錯誤!” & Chr(10)& “錯誤類型:” & Error(Err.Number), 16即可。當然,你需要在Esub這個子過程中,把所有可能會涉及到的錯誤代碼都添加上。如果只想知道哪里錯了,也可以直接提醒,出錯也是可以的Private Sub Form_Load()
On Error GoTo ToExit
Dim g, ErrNum As Boolean
g = 1
Do Until ErrNum
g = g * 1024
Loop
ToExit: MsgBox “程序出現(xiàn)錯誤!” & Chr(10)& “錯誤類型:” & Error(Err.Number), 16
End Sub
第二篇:錯誤處理
1.檢測到有潛在危險的 Request.Form 值
原因:
(1)在提交數(shù)據(jù)的頁面或webconfig中沒有對validateRequest的屬性進行正確的設(shè)置
(2)HTML里面寫了兩個