on error resume next 这条语句是用来屏蔽出错信息,当出错时,使得程序继续执行的,不过在使用中,似乎很多人没有考虑到on error resume next的作用范围.比如
<%
On Error Resume Next
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("db.mdb")
If Err.Number<>0 Then Response.Write "数据库连接发生错误" : Response.End
Set Rs=conn.execute("Select * from 表")
Do While Not rs.eof
response.write rs(0)
rs.movenext
loop
%>
类似上面的代码,如果错误是发生在建立数据连接的时候,那么程序会按照我们设想的那样停止执行,给出出错信息,但假如是在set rs=conn.execute("select * from 表")这里出错呢?这个时候on error resume next仍然在起作用,这时候,一个占用cpu 100%的死循环就出现了,结果呢,如果服务器设置的好,那顶多你自己的站点无法访问了,如果服务器设置不够严格,那整个服务器的站点都要遭殃,结果就是空间商停掉你的空间.
代码改造一下
<%
Dim conn
Sub connect
On Error Resume Next
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("db.mdb")
If Err.Number<>0 Then Response.Write "数据库连接发生错误" : Response.End
End sub
connect
Set Rs=conn.execute("Select * from 表")
Do While Not rs.eof
response.write rs(0)
rs.movenext
loop
%>
这样on error resume next就只作用于connect这个过程了,后面程序出错,不会因为on error resume next而带来死循环.
另外,on error resume next会屏蔽掉出错信息,在写程序的时候,尤其是初学者写程序的时候,很有可能因为这条语句的使用,使你忽略掉程序里隐藏的一些小错误.所以一定要慎用.
专业为您提供:网站建设 域名注册 企业邮局 虚拟主机 在线代理 免备案虚拟主机 VPS空间 免费域名注册 域名申请 域名查询
中国互联网络信息中心
违法和不良信息举报中心
全国24小时免费服务热线:0512-69810009 公司地址:江苏省苏州市昆山开发区珠江南路173号201室
科龙网络 © 中国 版权所有 本站程序界面、源代码受相关法律保护,未经授权,严禁使用
本站法律顾问:广东知名律师 广东益诺众承律师事务所 夏天风 律师
Copyright © 2000- 2012 kelong.biz All rights reserved