從這節開始,將會給大家介紹幾個ASP中的三大通用類,它貫穿於我所設計的三層架構中,是對ASP文法的擴充,可以提高很多細節處理上的效率,可以算是一點點架構的味道.
本節介紹錯誤處理類,類名Con_Error,在字碼頁面之初就進行初始化,執行個體名為e,以下的e.add 即使用該錯誤類的執行個體化對象進行操作.
方法介紹:
e.Add(ByVal vErrorMessage ) 記錄一個錯誤,並且設定 e.Error = true . 在程式檢測使用者名稱合法性等地方發現錯誤時,就調用這個方法,記錄一個錯誤資訊.
例如,使用者登陸時密碼錯誤,則調用 e.add("您的帳號或密碼錯誤") .這時候,錯誤對象e中便記錄了一個錯誤,錯誤對象的屬性e.Error=true .在後續操作中,可以使用錯誤對象的這個屬性進行判斷.
例如:
出現錯誤後彈出小視窗提示錯誤,並返回前一頁.
if e.Error then
e.Alert_Back "請重新登入!" 'Alert_Back 的作用在後面介紹.
end if
e.Alert_Back(ByVal vMessage) 使用Javascript彈出一個錯誤提示框,顯示目前所有的錯誤清單,Alert_Back(vMessage)中的vMessage顯示在最後一行,用於提示使用者在看到這個錯誤資訊後需要採取的步驟. 並且返回到前一頁. 這個方法的代碼貼出來,大家會更好理解:
Public Sub Alert_Back(ByVal vMessage)
strJSMessage = JSMessage & vMessage 'JSMessage用於儲存e對象中的錯誤清單,每個錯誤之間用\n分開.
%>
<script language="javascript" >
<!--//
alert("<%=strJSMessage %>"); '彈出提示錯誤框.
history.back(); '返回前一頁
//-->
</script>
<%
response.end '注意這裡要停止輸出,避免出錯的同時程式還繼續執行.
End Sub
e.Alert_Back 方法延伸了幾個類似效果的方法,如下一同介紹,實現的過程請看附加的源碼:
e.Alert(ByVal vMessage) 只彈出錯誤提示框,不返回前一頁,也不停止程式的執行.
e.Alert_Close(ByVal vMessage) 彈出錯誤提示框,當使用者點擊確定後,關閉當前視窗
e.OK_Go(ByVal vMessage,ByVal vURL) 彈出資訊氣球,當使用者點擊確定後,跳轉到vURL頁面
e.Go(ByVal vURL) 直接跳轉到vURL頁面
以上幾個方法的作用,大家應該都很熟悉了,其實它們不僅限於錯誤處理的.
e.Clear 清空錯誤對象中記錄的錯誤資訊 , e.Error = false
因為e對象是一個全域的對象,可能在很多過程中都調用了. 當你只需要統計某一個模組中的錯誤時,可以在開始調用這個方法,清空e中的錯誤.
以下幾個是對Response.Write的封裝,目的僅僅是為了使用時的方便快速.
e.Debug(ByVal vMessage) 輸出調試資訊. 當程式完工時,其中會存在不少用Response.write 輸出的錯誤調試資訊,要都刪掉又要細細地找. 使用e.Debug專門輸出調試資訊,當程式完成時,只需要搜尋e.Debug,就可以找到所有的調試錯誤資訊的位置.
e.w(ByVal vMessage) 輸出資訊. 僅僅是Response.write的簡單封裝,在程式中輸入e.w 比輸入Response.write 不知道要方便多少,而且總是容易寫錯.
e.BR 輸出一個分行符號,等同於 response.Write "<BR />"
以下4個是對Response.End的封裝,只是按照操作習慣,定義的幾個一樣功能的方法:
e.Pause == Response.End
e.P == Response.End
e.Stop == Response.End
e.End == Response.End
還有一個屬性e.Message ,輸出e對象中所有的錯誤清單
具體的實現細節請看代碼
複製代碼 代碼如下:Class Con_Error
Private blnError
private strMessage
private strJSMessage
Private Sub Class_initialize()
blnError = false
strMessage = ""
End Sub
Private Sub Class_Terminate()
End Sub
' ==================================================================================
' Property
' ==================================================================================
' Message :
Public Property Let Message(ByVal value)
strMessage = value
End Property
Public Property Get Message()
Message = strMessage
End Property
' Error number
Public Property Get Error()
Error = blnError
End Property
' JSMessage : show in messagebox
Private Property Get JSMessage()
strJSMessage = Replace(strMessage , "<br>" , "\n")
strJSMessage = Replace(strJSMessage , vbCrLf , "")
JSMessage = strJSMessage
End Property
' ==================================================================================
' Method
' ==================================================================================
' Add : add an Error message
Public Sub Add(ByVal vMessage)
blnError = true
strMessage = strMessage & vMessage & "<br>"
End Sub
Public Sub Clear
blnError = false
strMessage = ""
End Sub
' Alert
Public Sub Alert(ByVal vMessage)
strJSMessage = JSMessage & vMessage
%>
<script language="javascript" >
<!--//
alert("<%=strJSMessage %>");
//-->
</script>
<%
End Sub
' Alert_Back : alert and back
Public Sub Alert_Back(ByVal vMessage)
strJSMessage = JSMessage & vMessage
%>
<script language="javascript" >
<!--//
alert("<%=strJSMessage %>");
history.back();
//-->
</script>
<%
response.end
End Sub
' Alert_Close : alert and close
Public Sub Alert_Close(ByVal vMessage)
strJSMessage = JSMessage & vMessage
%>
<script language="javascript" >
<!--//
alert("<%=strJSMessage %>");
window.opener = null;
window.close();
//-->
</script>
<%
response.end
End Sub
'*********************************************
'Debug : response.write ,use it to delete debug message easily,just seach "e.Debug" from files
'*********************************************
Public Sub OK_Go(ByVal vMessage,ByVal vURL)
strJSMessage = JSMessage & vMessage
%>
<script language="javascript" >
<!--//
alert("<%=strJSMessage %>");
location.href = '<%=vURL %>';
//-->
</script>
<%
response.end
End Sub
Public Sub Go(ByVal vURL)
response.Redirect vURL
response.end
End Sub
'*********************************************
'Debug : response.write ,use it to delete debug message easily,just seach "e.Debug" from files
'*********************************************
Public Sub Debug (ByVal vMessage)
response.Write vMessage
response.flush
End Sub
' ****** W : write
Public Sub W(ByVal vMessage)
response.Write vMessage
End Sub
' ****** BR : write <br>
Public Sub Br
response.Write "<BR />"
End Sub
'*********************************************
'Pause : response.end , mark debug info clearly
'*********************************************
Public Sub Pause
response.end
End Sub
Public Sub P
response.end
End Sub
Public Sub [Stop]
response.end
End Sub
Public Sub [end]
response.end
End Sub
End Class