编译如下:
“脚本错误……是否调试脚本……?”或“类型错误……”这类提示是Web开发者每日生活的一部分。要预先考虑到所有可能遇到的错误并加以处理以免用户看到这些对他们来说完全没有意义的提示信息,作为一个Web开发者,我知道这几乎是不可能的。
相反,我们只能接受错误总是可能随时出现这个事实,然后拿出某种办法巧妙地控制它们,这正是本文要介绍的内容。
在这篇文章中,我们将介绍如何才能响应由于脚本、网络、硬件或其他意外缺陷导致的运行时错误,以及如何控制这些错误、可以采取哪些处理步骤来修正这些错误。
健壮的错误控制机制涉及到两个方面,第一是服务器端的错误控制,第二是浏览器内客户端脚本的错误控制。
服务器端错误控制
IIS 5.0 使用ASP 3.0脚本引擎,它提供了许多新的功能来处理Web服务器上可能遇到的错误。其中ASPError内建对象是ASP 3.0引入的一个最值得注意的错误处理对象。对于那些熟悉VB/VBScript的开发者来说,ASPError对象和Err对象非常相似,不过前者包含更多有关错误的信息。
IIS在脚本执行遇到错误时会创建ASPError对象,并在这个对象中填充以下信息以及其他一些细节:
ASPCode:由IIS返回的ASP错误代码。
Number:包含标准的COM错误代码。
Source:包含产生错误的实际源代码。
File:产生错误的ASP文件的名字。
Line:ASP脚本中的行号。
Description:有关错误的简短说明。
另外还有一个在IIS 4.0中已经存在,但在IIS 5.0中有所增强的功能,这就是将所有未被控制的错误重定向到指定ASP页面的功能。如果再用VB来作比较的话,我们可以把这个功能看作VB中的“On Error Gogo 错误处理过程”语句,但VB中错误控制只适用于特定函数,IIS中的错误定向对所有的ASP页面都有效。
Visual Basic函数中的错误控制举例如下:
Sub DoSomething
On error goto ErrHandler < -- (VB错误控制语句)
code.....code .... code ....
If an error occurs in this section the control is automatically
transferred to the ErrHandler section below.
code.....code .... code ....
ErrHandler:
All errors come here and hence this section can be used to
handle errors preventing the user from seeing them.
End Sub
假设网站有50个Web页面,如果其中任意一个页面产生了运行时错误,则控制自动转到指定的ASP页面。下面是设置错误处理页面的具体步骤:
在MMC控制台(Windows NT)或者IIS服务(Windows 2000)中,扩展树找到待设置的Web网站。
右击Web网站名字显示菜单。
单击“属性”。
在属性对话框中,选择“自定义错误信息”页面。
滚动列表框,找到“HTTP错误”显示为“500;100”的那一行。
双击该行,从“消息类型”列表框选择“URL”。
在URL输入框输入当Web网站遇到运行时错误时所执行页面的URL。
注意:输入虚拟路径,不要输入完整的URL。例如:
可以输入:
/myWebSite/Tools/MyErrorHandlingPage.ASP
但不要输入:
http://myServer/myWebSite/Tools/MyErrorHandlingPage.ASP
单击“确定”接受设置并关闭对话框。
这样就启用了网站的错误控制功能。接下来在控制转到MyErrorHandlingPage.ASP之后如何处理就要根据实际情况而定。根据不同的错误类型,每一个网站都可能用不同的方式处理它们。