(3) 记录错误
用名为strDetail的字符串变量创建了错误报告后,可以像在第5章中做的那样,采用FileSystemObject对象把它追加到日志文件中。如果成功,布尔型“failed flag变量将被设置成False。
...
'now log error to a file. Edit the path to suit your machine.
'you need to give the IUSR_machinename permission to write and modify
'the file or directory used for the log file:
strErrorLog = "c:tempcustom_error.log"
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTStream = objFSO.OpenTextFile(strErrorLog, 8, True);;'8 = ForAppending
If Err.Number = 0 Then objTStream.WriteLine strDetail & vbCrlf
If Err.Number = 0 Then
;;;objTStream.Close
;;;blnFailedToLog = False
Else
;;;blnFailedToLog = True
End If
%>
(4) 跳转到另一个页面
现在准备在网页中创建一些输出。在此之前,需要检查错误细节以确定下一步要做什么。例如,可用ASPError对象的Number或其他属性检查错误类型。在这里,可认为“Type Mismatch错误不是代码中有错误,可能是由于用户在文本框中输入错误数据产生的。所以不显示这个网页的剩余部分,而是跳转到另一个网页
If objASPError.Number = -2146828275 Then;;;;' 0x800A000D - type mismatch
;;;Response.Clear
;;Response.Redirect "/";;;' go to the Home page
End If
是否决定这样做依赖于你自己的情况以及你打算发现、记录或显示的错误类型。需要注意的是,因为我们不想把目前的网页环境传送到新的网页上,所以选择使用Reponse.Redirect语句而不是用Server.Transfer语句。
(5) 显示错误信息
最后,显示错误报告和其他信息以及返回到上一个网页或主页的按钮。
<%
'see if the logging to file failed
'if so, display message
If blnFailedToLog Then
;;;Response.Write "<B>WARNING: Cannot log error to file '" & strErrorLog & "'</B>.<P>"
End If
'see if we are displaying the error information
If Session("ShowError") = "Yes" Then
%>
;;;<PRE><% = Server.HTMLEncode(strDetail) %></PRE>
<%
End If
'see if we are displaying the debug information
If Session("ShowDebug") = "Yes" Then Server.Transfer "debug_request.asp"
'create the buttons to return to the previous or Home page
strReferrer = Request.ServerVariables("HTTP_REFERER")
If Len(strReferrer) Then
%>
;;;<FORM ACTION="<% = strReferrer %>">
;;;<INPUT TYPE="SUBMIT" NAME="cmdOK" VALUE=" ">
;;; Return to the previous page<P>
;;;</FORM>
<%
End If
%>
<FORM ACTION="/">
<INPUT TYPE="SUBMIT" NAME="cmdOK" VALUE=" ">
Go to our Home page<P>
</FORM>
对上面这段程序需要注意的是:在定制错误页面里,不能使用Server.Execute方法。如果我们这样做的话,至少程序不能正常工作。当程序把执行转到特定的网页时,程序不会再返回到当前网页,这就是我们使用Server.Transfer方法载入显示调试信息的网页的原因。这是下一部分要讨论的问题。
7.5 程序调试——发现及处理错误
;;;;;;;读完上面内容,读者一定很想创建一个没有错误的ASP网页。但你可能会发现网页并不能工作。怎么办,只有进行测试。
;;;;;;;在这一部分,首先简要看一下能使调试更容易的一些工具。Microsoft Script Debugger试图把调试支持工具提高到像Visual Basic、Delphi和Visual C++等大多数传统编程环境的水平。然而,下面将首先讨论一些更传统的有助于跟踪出现在网页中的错误的技术。
标签: 编程