以國內最流行ASP為例,我不知道有多少人會在寫代碼時想到“容錯”這個概念,實際上當我遇到這種事時,也是不了了之。為什麼呢,想想最初的意思是認為寫如下代碼就能容錯了,見示例1-1。
<%@ Language=VBScript %>
<%option explicit%>
<%
'出錯過濾
on error resume next
……………(代碼略)
%>
示例1-1 常見代碼一瞥
以上代碼就經常出現在各位同仁的手中,不用說出個中原因,我完成能理解各位現在的心情,我可以向大家坦白地說,我寫了二年的ASP網頁,大多數都是這種方式,不斷的寫,不斷的改,心力交瘁,現在都不願回頭改寫自已的代碼了。實際上最基本的容錯機制的想法,就是不要相信程序能為你節省多少事,要把控制權掌握在自已的手中,這是必要的。
<%@ Language=VBScript %>
<%Option Explicit%>
<%
'========================================
DIM NDEBUG_MSG
NDEBUG_MSG=TRUE
IF NDEBUG_MSG = TRUE THEN
'出錯過濾
ON ERROR RESUME NEXT
END IF
'===============END =====================
……………(代碼略)
'數據事務處理-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 完整的容錯機制代碼范例
看了以上代碼,你會發現也沒有什麼高超技藝在裡面,高手可能更是不屑一顧。但大家未必能在寫代碼時這樣作。
【1-1】編寫動態網頁時,一定要考慮容錯機制,如在ASP中,就應該參考示例1-2,寫出健壯的代碼。