Asp-Classic

在經典 ASP 中使用“on error resume next”,以及如何處理錯誤

  • March 28, 2016

大家好,我想問一個關於on error resume next

假設我們有一個循環來瀏覽記錄集,例如:

Do while not rs.EOF
query = "UPDATE ...."    
conn.execute(query)    
rs.movenext
loop

我想確保UPDATE一切順利,並且我想檢查是否存在一些問題,因此我在程式碼中添加了調試功能,例如:

Do while not rs.EOF
query = "UPDATE ...."

on error resume next

conn.execute(query) 

If Err.Number <> 0 Then
  Response.write(Err.Number)
  response.write("<br>")
  response.write(Err.description)
  response.write("<br>")
  response.write(query)
  response.write("<br><br>")
end if

on error goto 0

rs.movenext
loop

問題是:在循環期間,如果遇到錯誤,下一個循環是否會出現錯誤(並因此再次觸發錯誤塊)?還是on error goto 0會清除 Err 對象?換句話說,它會起到錯誤處理的作用嗎?

VBScript 重置錯誤goto 0

on error resume next
i = 1 / 0
WScript.echo( err.number ) '' prints 11 (div by 0)
on error goto 0
WScript.echo( err.number ) '' prints 0 (no error)

還有顯式的err.clear().

要使用的正確程式碼是

Err.Clear

我已經用以下程式碼對其進行了測試

<%on error resume next
  response.write (p(10))
  Response.write(Err.Number)
  response.write("<br>")
  response.write(Err.description)
  response.write("<br>")
  Err.Clear
  Response.write(Err.Number)
  response.write("<br>")
  response.write(Err.description)
  response.write("<br>")



%>

您可以在下面看到正確的響應,這表明錯誤正在清除

*13

類型不匹配

0*

引用自:https://stackoverflow.com/questions/17445890