vbScript on error resume next容錯使用心得
來源:易賢網(wǎng) 閱讀:1384 次 日期:2016-07-20 13:56:23
溫馨提示:易賢網(wǎng)小編為您整理了“vbScript on error resume next容錯使用心得”,方便廣大網(wǎng)友查閱!

vbscript中,錯誤處理使用on error resume next來完成,如果在你的代碼里加入這一句,在這句之后的其他代碼如果出現(xiàn)錯誤,系統(tǒng)將忽略這些錯誤繼續(xù)運行后面的代碼,同時,我們可以使用下面的代碼來捕獲錯誤

代碼如下:

If err.number<>0 then

errNum = Err.Number

errDesc = Err.Description

Call G00B02logOut("Error.002", errNum ,errDesc )

End If

If err.number<>0 then

errNum = Err.Number

errDesc = Err.Description

Call G00B02logOut("Error.002", errNum ,errDesc )

End If

這樣可以捕獲到錯誤代碼和錯誤的描述信息,并寫入日志文件。然 而,有個問題是,在我們捕獲了這個錯誤之后的代碼,如果再出現(xiàn)錯誤而你沒有捕獲的話,代碼仍然會忽略錯誤繼續(xù)運行。忽略錯誤是我們不希望看到的結(jié)果,將導致程序調(diào)試困難。此時可以使用 On Error GoTo 0 這句來終止前面錯誤處理,即可以和on error resume next 成對出現(xiàn)。這樣就不會影響后面的代碼了。

代碼如下:

on error resume Next

。。。

'DB operate。。

。。。

If err.number<>0 then

errNum = Err.Number

errDesc = Err.Description

Call G00B02logOut("Error.002", errNum ,errDesc )

End If

On Error Goto 0

on error resume Next

。。。

'DB operate。。

。。。

If err.number<>0 then

errNum = Err.Number

errDesc = Err.Description

Call G00B02logOut("Error.002", errNum ,errDesc )

End If

On Error Goto 0

有幾個特點需要了解,

1,on error resume Next如果在全局定義,則作用是全局的,你在主程序中使用了這一句,后面如果調(diào)用了一個函數(shù),那么函數(shù)中如果有錯誤,也將被忽略,你在主程序中函數(shù)調(diào)用的語句后面也可以捕獲到這個錯誤,這一點可以通過下面簡單的代碼驗證:

代碼如下:

On error resume Next

funcb ‘調(diào)用函數(shù)

If err.Number <> 0 Then

errNum = Err.Number

errDesc = Err.Description

WScript.Echo errNum & " - " & errDesc

End If

WScript.Echo "main ...."

'On Error Goto 0

Sub funcb

aaaaaaaaaaa '測試用的無效語句

WScript.Echo "funcb ok"

If err.Number <> 0 Then

errNum = Err.Number

errDesc = Err.Description

WScript.Echo errNum & " - " & errDesc

End If

End

On error resume Next

funcb ‘調(diào)用函數(shù)

If err.Number <> 0 Then

errNum = Err.Number

errDesc = Err.Description

WScript.Echo errNum & " - " & errDesc

End If

WScript.Echo "main ...."

'On Error Goto 0

Sub funcb

aaaaaaaaaaa '測試用的無效語句

WScript.Echo "funcb ok"

If err.Number <> 0 Then

errNum = Err.Number

errDesc = Err.Description

WScript.Echo errNum & " - " & errDesc

End If

End

執(zhí)行以上代碼的結(jié)果:

13 - 型が一致しません。

main ....

可以看出,在函數(shù)中,aaaaaaaaaaa是故意制造的一個錯誤,其后的WScript.Echo "funcb ok"以及后面的代碼都沒有執(zhí)行。但是,主程序中的WScript.Echo "main ...."語句是執(zhí)行了的。就是說,在函數(shù)中如果某個語句出錯,函數(shù)中后面的語句都不執(zhí)行,直接執(zhí)行調(diào)用函數(shù)的語句后面的語句。

2,On error resume Next如果在函數(shù)內(nèi)定義,看下面的代碼執(zhí)行情況

代碼如下:

funcb ‘函數(shù)調(diào)用

If err.Number <> 0 Then

errNum = Err.Number

errDesc = Err.Description

WScript.Echo errNum & " - " & errDesc

End If

WScript.Echo "main ...."

Sub funcb ‘函數(shù)定義

On error resume Next

aaaaaaaaaaaa '無效語句

WScript.Echo "funcb ok"

If err.Number <> 0 Then

errNum = Err.Number

errDesc = Err.Description

WScript.Echo errNum & " - " & errDesc

End If

End Sub

funcb ‘函數(shù)調(diào)用

If err.Number <> 0 Then

errNum = Err.Number

errDesc = Err.Description

WScript.Echo errNum & " - " & errDesc

End If

WScript.Echo "main ...."

Sub funcb ‘函數(shù)定義

On error resume Next

aaaaaaaaaaaa '無效語句

WScript.Echo "funcb ok"

If err.Number <> 0 Then

errNum = Err.Number

errDesc = Err.Description

WScript.Echo errNum & " - " & errDesc

End If

End Sub

執(zhí)行結(jié)果如下:

funcb ok

13 - 型が一致しません。

13 - 型が一致しません。

main ....

可以看到,函數(shù)體內(nèi)的err對象和調(diào)用它的主程序中都可以捕獲到這個錯誤,這說明err對象是全局的,應該這么理解,err的作用范圍在一個On error resume Next語句和一個On Error Goto 0之間有效。如果我們在funcb調(diào)用語句的后面在加一個無效語句,執(zhí)行時會彈出錯誤msg框,說明函數(shù)體內(nèi)的On error resume Next不能作用到函數(shù)體外。

以上是使用On error resume Next的一些體會,如果了解了上面兩點,就可以較好的使用錯誤處理的功能了。

更多信息請查看腳本欄目
易賢網(wǎng)手機網(wǎng)站地址:vbScript on error resume next容錯使用心得

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權所有:易賢網(wǎng)