

掃一掃 享優(yōu)惠
on error resume next 這條語句是用來屏蔽出錯(cuò)信息,當(dāng)出錯(cuò)時(shí),使得程序繼續(xù)執(zhí)行的,不過在使用中,似乎很多人沒有考慮到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 "數(shù)據(jù)庫連接發(fā)生錯(cuò)誤" : Response.End
Set Rs=conn.execute("Select * from 表")
Do While Not rs.eof
response.write rs(0)
rs.movenext
loop
%>
類似上面的代碼,如果錯(cuò)誤是發(fā)生在建立數(shù)據(jù)連接的時(shí)候,那么程序會(huì)按照我們設(shè)想的那樣停止執(zhí)行,給出出錯(cuò)信息,但假如是在set rs=conn.execute("select * from 表")這里出錯(cuò)呢?這個(gè)時(shí)候on error resume next仍然在起作用,這時(shí)候,一個(gè)占用cpu 100%的死循環(huán)就出現(xiàn)了,結(jié)果呢,如果服務(wù)器設(shè)置的好,那頂多你自己的站點(diǎn)無法訪問了,如果服務(wù)器設(shè)置不夠嚴(yán)格,那整個(gè)服務(wù)器的站點(diǎn)都要遭殃,結(jié)果就是空間商停掉你的空間.
代碼改造一下
<%
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 "數(shù)據(jù)庫連接發(fā)生錯(cuò)誤" : 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這個(gè)過程了,后面程序出錯(cuò),不會(huì)因?yàn)?strong class='redfont'>on error resume next而帶來死循環(huán).
另外,on error resume next會(huì)屏蔽掉出錯(cuò)信息,在寫程序的時(shí)候,尤其是初學(xué)者寫程序的時(shí)候,很有可能因?yàn)檫@條語句的使用,使你忽略掉程序里隱藏的一些小錯(cuò)誤.所以一定要慎用.
珠海易搜信息技術(shù)有限公司
官方服務(wù)號
運(yùn)營部-區(qū)經(jīng)理
新手入門 易搜大講堂 建站攻略 常用文檔下載 備案教程 域名專題 主機(jī)專題 網(wǎng)站建設(shè)專題 IDC資訊 地區(qū)網(wǎng)站建設(shè)
域名管理 主機(jī)管理 建站寶盒管理 400電話管理 備案管理
免費(fèi)體驗(yàn) 每周更新 new 合作伙伴 友情鏈接 誠聘英才 企業(yè)服務(wù) 權(quán)利與義務(wù) 未注冊域名列表 站長工具
關(guān)于我們 聯(lián)系我們 客服中心 常見問題 支付方式 提交問題 舉報(bào)中心 公司資質(zhì)