On Error 語(yǔ)句
啟用或禁用錯(cuò)誤處理程序。
On Error Resume Next
On Error GoTo 0
說(shuō)明
如果在您的代碼中未使用 On Error Resume Next 語(yǔ)句, 所發(fā)生的運(yùn)行時(shí)錯(cuò)誤 將顯示錯(cuò)誤信息,同時(shí),代碼的執(zhí)行也隨之終止。但是具體操作由運(yùn)行代碼的主機(jī)決定。主機(jī)有時(shí)可有選擇地處理各類(lèi)錯(cuò)誤。在有些情況下,它可以在出錯(cuò)的地方激活腳本調(diào)試器。而在另一些情況下, 由于主機(jī)無(wú)法通知用戶(hù),因此對(duì)所發(fā)生的錯(cuò)誤沒(méi)有明確說(shuō)明。至于如何處理錯(cuò)誤則完全取決于主機(jī)的功能。
在任意一個(gè)特殊過(guò)程中,只要在調(diào)用堆棧的地方啟用錯(cuò)誤處理程序,所發(fā)生的錯(cuò)誤一般不會(huì)是致命性的。如果在一個(gè)過(guò)程中沒(méi)有啟用局部錯(cuò)誤處理程序,當(dāng)發(fā)生錯(cuò)誤時(shí),控制可通過(guò)堆棧調(diào)用轉(zhuǎn)移,直到找到一個(gè)具有錯(cuò)誤處理程序的過(guò)程,并在出錯(cuò)的地方處理錯(cuò)誤。如果在調(diào)用堆棧的過(guò)程中沒(méi)有找到錯(cuò)誤處理程序,則在出錯(cuò)的地方顯示錯(cuò)誤信息,同時(shí)終止代碼執(zhí)行,或者通過(guò)主機(jī)來(lái)正確處理錯(cuò)誤。
On Error Resume Next 會(huì)使程序按照產(chǎn)生錯(cuò)誤的語(yǔ)句之后的語(yǔ)句繼續(xù)執(zhí)行,或是按照最近一次所調(diào)用的過(guò)程(該過(guò)程含有 On Error Resume Next 語(yǔ)句)中的語(yǔ)句繼續(xù)運(yùn)行。這個(gè)語(yǔ)句可以不顧運(yùn)行時(shí)錯(cuò)誤,繼續(xù)執(zhí)行程序,之后您可以在過(guò)程內(nèi)部建立錯(cuò)誤處理例程。在調(diào)用另一個(gè)過(guò)程時(shí),On Error Resume Next 語(yǔ)句變?yōu)榉腔顒?dòng)的。所以,如果希望在例程中進(jìn)行內(nèi)部錯(cuò)誤處理,則應(yīng)在每一個(gè)調(diào)用的例程中執(zhí)行 On Error Resume Next 語(yǔ)句。
當(dāng)調(diào)用另一過(guò)程時(shí),禁止使用On Error Resume Next 語(yǔ)句,因此如果您想在例程中嵌入錯(cuò)誤處理程序,則需要在每次調(diào)用例程時(shí)都應(yīng)執(zhí)行 On Error Resume Next 語(yǔ)句。當(dāng)退出一個(gè)過(guò)程時(shí),錯(cuò)誤處理程序可恢復(fù)到它在進(jìn)入所退出過(guò)程之前的狀態(tài)。
如果您已啟用 On Error Resume Next 錯(cuò)誤處理程序,則可使用 On Error GoTo 0禁用錯(cuò)誤處理程序。
下面例子舉例說(shuō)明如何使用 On Error Resume Next 語(yǔ)句:
On Error Resume NextErr.Raise 6 '
產(chǎn)生溢出錯(cuò)誤。MsgBox ("Error # " CStr(Err.Number) " " Err.Description)
Err.Clear '
清除錯(cuò)誤。
您可能感興趣的文章:- vbScript on error resume next容錯(cuò)使用心得
- VBScript中On Error語(yǔ)句用法小結(jié)