2024年3月27日发(作者:)
该语句的作用是:启用或禁用错误处理程序。一般用法如下:
On Error Resume Next
On Error GoTo 0
如果在您的代码中未使用On Error Resume Next语句,所发生的运行时错误将显示错误信
息,同时,代码的执行也随之终止。
但当你采用它时,就会使程序按照产生错误的语句之后的语句继续执行,或是按照最近一
次所调用的过程(该过程含有 On Error Resume Next 语句)中的语句继续运行。这个语句
可以不顾运行时错误,继续执行程序,之后您可以在过程内部建立错误处理例程。
在调用另一个过程时,On Error Resume Next 语句变为非活动的。所以,如果希望在例程
中进行内部错误处理,则应在每一个调用的例程中执行 On Error Resume Next 语句。
如果您已启用 On Error Resume Next 错误处理程序,则可使用On Error GoTo 0禁用错误
处理程序。
附注:要在代码中生成运行时错误,请用Err对象的Raise方法。
这样的情况经常在调试程序的时候看见,比如分别调试下面两程序则会显示。
1,
<% 6%>
技术信息(用于支持人员)
错误类型:
Microsoft VBScript 运行时错误 (0x800A0006)
溢出
2,
<%cnbruc%>
调试的时候也就是
技术信息(用于支持人员)
错误类型:
Microsoft VBScript 运行时错误 (0x800A01A8)
缺少对象: 'cnbruce'
但当你在首行添加了On Error Resume Next之后,发现不报错提示,表明内部错误处理完
成。但进行下列程序的时候发现
3,
<%
On Error Resume Next
cnbruc
On Error GoTo 0
cnbruc
%>
这时运用了On Error GoTo 0,则会显示出错信息,只不过不是第三行,而是第五行的cnbruc
错误对象了。
asp中On Error Resume Next的详细用法
On Error Resume Next的意思是如果发生错误就继续直接执行出错语句下面的那句。一般
的,如果出错,VB会报告并停止运行,但有时错误并不严重,不会产生严重影响,你可以在
可能出错的语句前面加上这句。但是如果错误很严重,会影响到后续语句,就不要使用这
个方法了
当我们在程序最上面使用On Error Resume Next语句时,所有的错误都会被忽略,程序会自动执行下
一条语句。这样程序就会完全执行,出错后用户也不会看到出错信息。但是这样也有 不好的地方,那就是
如果程序没有按照你想像的执行的话,你就很难找到到底是哪里出了问题,所以你就得在必要的地方对错
误进行处理。
处理错误
在ASP中,处理错误的最好的办法就是在程序最底端放上代码来处理错误。我也推荐在每个ASP程
序都使用缓冲区。这样的话,如果错误发生,页面就会停止, 页面内容也会被清除,这样用户就不会看到
错误信息,对你们的抱怨也就少了!下面是一个例子:
<%@ LANGUAGE="VBScript" %>
<%Respon = True
"设置buffer为True
On Error Resume Next
"开始错误处理
%>
<%"错误处理
If <> 0 Then
"清除页面
"显示错误信息给用户
%>
An error occurred in the execution of this ASP page
Please report the following information to the support desk
Page Error Object
错误 Number: <%= %>
错误信息: <%= ption %>
出错文件: <%= %>
出错行: <%= %>
<%End If%>
你们上面看到了,我首先设置On Error Resume Next ,这样出现错误就不会影响程序的执行
。
事关程序命运 On Error Resume Next 问题
各位高手请教你们
我一个ASP投稿程序,数据库连接的代码是
<%
'dim conn
'dim connstr
'dim db
db="data/" '数据库文件位置
on error resume next
connstr="DBQ="+server.mappath(""&db&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("TION")
if err then
else
connstr
end if
%>
但现在经常出现ASP跑死,不能打开,要过几分钟才能恢复。请问是不是和其中On Error
Resume Next有关系,不能终止错误,如果是,如何避免在运行错误时,可以自动终止,
释放出一些资源。
多谢各位!
问题补充:如果删除了这个On Error Resume Next,会不会有大的弊端?
这个代码可否优化点,节省一些程序资源消耗,避免跑死ASP的情况?首先,On Error
Resume Next不是避难用的,一般来讲在程序调试无误以后,加上这句话,用来防止意外
,如果本身你的程序就有问题,这句话的作用就是让你逃避错误。
其实删除这句话也没什么妨碍,这样的话if err then
else
connstr
end if
就要改成 connstr ,这样的话Err就会实时的显示出来,程序有错时执行的是
if err then
这样只是把ERR的错误信息清空
而程序自然没什么反应的 if err then
respon("出错!")
respon
else connstr
end if
你的错误处理太那个了,出错了忽略有什么用当然是把错误说出来,然后想办法,你光把错误
清除.可是你下面的代码还是要调用这个CONN,但这个CONN的错误处理是,不管连没连上,都
往下走,那么没连上的时候,下面不知道当然还是去用这个连接,自然跑死
解决因使用ON ERROR RESUME NEXT导致被掩饰的错
误引起结果不正确的问题
程序首端添加了On Error Resume Next ,以更好地处理执行时引起的错误,但在数据库访
问中引出了麻烦,因为我在一个查询操作中出错了,从运行过程来看就是被掩盖的错误导致
的。请问如何解决这个难题?
确实,因为使用了On Error Resume Next,即使前一步的操作(象你的查询操作)出了错,
以后操作仍会被继续执行,最终导致完全错误的结果。我们的解决办法就是先检查一下错误
再继续执行,具体代码见下:
If = 0 And objConnectio.Count = 0 Then
’ 如果没有错误,则继续执行数据库查询
Set rstResults = dbData.Execute(txtSql)
End If
顺便说一句,On Error Resume Next 要添加到你声明语言后的第一行,而不是其它位置


发布评论