美好的一天,我想问一个关于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对象?
换句话说,它会作为错误处理吗?
答案 0 :(得分:7)
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()
。
答案 1 :(得分:2)
要使用的正确代码是
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 :(得分:0)
on error resume next 语句只是忽略当前行错误并将程序控制发送到下一行。
出现错误转到0 只是停止在下次错误恢复时的工作。就是这样。
<%
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)
%>