正確處理ASP動(dòng)態(tài)頁(yè)面中的容錯(cuò)機(jī)制
發(fā)表時(shí)間:2023-08-15 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]以國(guó)內(nèi)最流行ASP為例,我不知道有多少人會(huì)在寫(xiě)代碼時(shí)想到“容錯(cuò)”這個(gè)概念,實(shí)際上當(dāng)我遇到這種事時(shí),也是不了了之。為什么呢,想想最初的意思是認(rèn)為寫(xiě)如下代碼就能容錯(cuò)了,見(jiàn)示例1-1。<%@ Lan...
以國(guó)內(nèi)最流行ASP為例,我不知道有多少人會(huì)在寫(xiě)代碼時(shí)想到“容錯(cuò)”這個(gè)概念,實(shí)際上當(dāng)我遇到這種事時(shí),也是不了了之。為什么呢,想想最初的意思是認(rèn)為寫(xiě)如下代碼就能容錯(cuò)了,見(jiàn)示例1-1。
<%@ Language=VBScript %>
<%option explicit%>
<%
'出錯(cuò)過(guò)濾
on error resume next
……………(代碼略)
%>
示例1-1 常見(jiàn)代碼一瞥
以上代碼就經(jīng)常出現(xiàn)在各位同仁的手中,不用說(shuō)出個(gè)中原因,我完成能理解各位現(xiàn)在的心情,我可以向大家坦白地說(shuō),我寫(xiě)了二年的ASP網(wǎng)頁(yè),大多數(shù)都是這種方式,不斷的寫(xiě),不斷的改,心力交瘁,現(xiàn)在都不愿回頭改寫(xiě)自已的代碼了。實(shí)際上最基本的容錯(cuò)機(jī)制的想法,就是不要相信程序能為你節(jié)省多少事,要把控制權(quán)掌握在自已的手中,這是必要的。
<%@ Language=VBScript %>
<%Option Explicit%>
<%
'========================================
DIM NDEBUG_MSG
NDEBUG_MSG=TRUE
IF NDEBUG_MSG = TRUE THEN
'出錯(cuò)過(guò)濾
ON ERROR RESUME NEXT
END IF
'===============END =====================
……………(代碼略)
'數(shù)據(jù)事務(wù)處理-start
If Err.number = 0 Then
'~~~~~ Open database and begin transaction ~~~~~~~~~~~~~~~~~~~~
'------------------------------
'-------------------------------------
objConn.BeginTrans
objConn.Execute (objSQL)
'~~~~~~ Commit the transaction and close the database connection
objConn.CommitTrans
Response.CacheControl ="Private"
Response.Expires = -1
……………(代碼略)
Else
'~~~~~ Rollback transactions and close objects
objConn.RollbackTrans
'~~~~~ Raise errors for asp page
'Err.Raise Err.Number, Err.Source, Err.Description
'Err.Clear
Response.Write "Description= ("& err.number &"),("& err.Description &")"
End If
'==============END FILES=====================
%>
示例1-2 完整的容錯(cuò)機(jī)制代碼范例
看了以上代碼,你會(huì)發(fā)現(xiàn)也沒(méi)有什么高超技藝在里面,高手可能更是不屑一顧。但大家未必能在寫(xiě)代碼時(shí)這樣作。
【1-1】編寫(xiě)動(dòng)態(tài)網(wǎng)頁(yè)時(shí),一定要考慮容錯(cuò)機(jī)制,如在ASP中,就應(yīng)該參考示例1-2,寫(xiě)出健壯的代碼。