宝盒小程序|微信小程序_小程序开发工具_小程序制作-耐思尼克

            滥用on error resume next造成的空间被停用

            发布时间:2008-11-18 16:35:18   浏览人数: 364905 次  

            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会屏蔽掉出错信息,在写程序的时候,尤其是初学者写程序的时候,很有可能因为这条语句的使用,使你忽略掉程序里隐藏的一些小错误.所以一定要慎用.

             
            由于死循环造成服务器cpu100%,我们将暂停空间web服务,待修复问题后才可重新开通



            上一篇:关于 SQL Server 没有 dbo 权限的问题
            下一篇:空间不够用,能否升级,如何升级?
                 广东省互联网协会理事会员  cdn加速服务  备案系统认证    举报不良网站 高新企业证书编号:GR201644000568

            耐思尼克 © 版权所有 Copyright © 2000-2017 NiceNIC.net,Inc. All rights reserved
            本公司代理"NICENIC INTERNATIONAL GROUP CO., LIMITED"公司注册域名服务
            备案号码: 粤ICP备09063828号-38 公安备案号: 粤公网安备 44049002000123号
            本站程序界面、源代码受相关法律保护, 未经授权, 严禁使用; 耐思尼克 ® 为我公司注册商标, 未经授权, 严禁使用
            法律顾问: 珠海知名律师 广东盛夏律师事务所 夏天风 律师
            耐思尼克诚意为:用户提供网络服务
            以下js为测试信息