在经典ASP中使用"on error resume next",以及如何处理错误。

13

大家好,我想询问关于on error resume next的问题。

假设我们有一个循环来遍历记录集,如下所示:

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

我希望确保UPDATE进行得很顺利,并检查是否存在问题,因此我在代码中添加了调试功能,如下:

```` 我想要确定 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对象?换句话说,它是否起到错误处理的作用?

问题是:在循环过程中,如果遇到错误,下一个周期会继续出现错误并再次触发错误块吗?还是on error goto 0会清除Err对象?换句话说,它是否可以用于错误处理?

3个回答

10

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()


3
正确的代码应该是:
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*


2

on error resume next语句仅忽略当前行错误并将程序控制转移到下一行。

on error goto 0仅停止on error resume next的工作。就是这样。

<%
on error resume next
response.write(1/0)
if err.number <> 0 then
response.write("<b>" & "err= "&"</b>")
response.write(err.description)
response.write("<b>" & " err number= "&"</b>" )
response.write(err.number&"</br>")
end if
'after this statement ASP will no longer resume the error and program terminate at here if error occur after this line
on error goto 0
response.write(6/0)
%>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接