当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP 3.0高级编程(三十)

ASP
ASP页面随机添加字符实现防复制的代码
ASP中应用事务处理技巧
asp下比较全面的获取IP地址的代码
ASP实现缓存类无错版
asp下实现批量插入数据的方法
asp下用ADODB.Stream代替FSO读取文本文件
asp之基于adodb.stream的文件操作类
自己写的文件操作的function和Sub vb.net dll
kesion科讯V4.0管理员Key工具
asp 获取access系统表,查询等操作代码
asp之字符串函数示例
asp之日期和时间函数示例
ASP 关于动态数据显示页面得锚点
Asp无组件上传进度条解决方案
ASP控制每页打印行数
用ASP实现分级权限控制
ASP在服务器自动解压RAR文件
用ASP实现远程将文件批量改名的代码
在Asp程序中取得表单所有内容的代码
使用ASP实现网站的“目录树”管理的代码

ASP 3.0高级编程(三十)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 127 ::
收藏到网摘: n/a

  第7章          
调试和错误处理
前面已经介绍了使用ASP所需要的基本技能,本章要讨论的另外一个问题是当ASP出现错误时怎么办,ASP出错时是什么情况。当精心编排的ASP页面出现问题停止了执行时,用户一般得到的仅是一些用处不大的建议,诸如:点击“刷新”按钮,或者“与站点的Web管理员联系,告诉他们你的页面不能正常工作了”等等。
本章除了提供有用的信息外,还想提供一个帮助区域。我们将详细介绍在脚本和页面中错误如何出现,可能产生的错误类型,以及什么造成了这些错误。更重要的是,要讨论如何尽可能避免错误的发生,如不能避免又如何妥善处理。
因此,本章将要探讨页面调试技术,也就是如何花费不多的精力和时间就能找到错误并解决问题。
本章包括以下内容:
· 能够出现的错误类型。
· 如何防止各种错误的产生。
· 如果不能防止错误发生,如何妥善处理这些错误。
· 如何发现和处理脚本错误及其他类型的错误。
· 如何使用定制的错误页面得到错误信息。
· 如何记录发生的错误以监视我们的网站。
· 创建一个定制错误网页和一个错误日志文件。
· 提供相关的在线帮助。
本章不涉及如何处理使用ActiveX Data Objects(ADO)访问数据源时出现的各种特殊类型的错误。像许多组件一样,ADO提供了自己的错误处理系统,第8章将深入讨论这一点。本章将从讨论能出现的各种错误类型开始,使我们能够认识这些错误并采取相应的措施。
据说,在非洲最黑暗的雨林深处,有这样一群程序员,他们的程序代码从来没有出现过错误。但是,很遗憾他们从没有享受过调试一段不能正常工作的应用程序的乐趣。调试程序代码是一个真正充满快乐的工作,所以我们要面对这个问题,在调试程序的过程中检验我们的观察力和横向思维能力。大多数“真实世界”的程序员能够体验这些乐趣是一件好事。
当然,有些人会说,调试程序与其说是判断,不如说是碰运气。花费了许多时间去调试一段有错误的程序,在某种程度上可以说确实是依赖运气。但是,如果第一步从合适的地方开始查看,可能会更快地解决问题。
但这不是程序调试应采取的办法。从理论上讲,当某段程序运行失败时,应该以逻辑或顺序方式跟踪错误。作为一个聪明和有经验的程序员,这才是调试时常用的方法,只有业余人员才随意改变程序中变量的值,到处添加Response.Write语句进行调试。
然而,为了能够在逻辑上跟踪程序中的错误,必须了解有关错误如何出现方面的基础知识,更重要的是知道错误出现在哪里,以便很快就能找到相应的地方。本章讨论的内容是有关程序中能够出现的不同种类的错误,错误的不同表现,以及如何记录和排除这些错误。同样重要的是,还将介绍如何避免这些错误的发生。
本章将从介绍可能出现的不同种类的错误开始,如果认为你的代码不会出现任何错误,可以直接跳到下一章。

7.1 错误的种类

7.1.1 语法或“编译”错误
       当我们第一次运行新编写的程序代码时,通常看到的第一种错误类型是“syntax error”。这就是所说的,程序代码上的语法错误。这就像在写作中使用了错误的语法,使读者不能了解其中的含义。而解释器(诸如脚本引擎)和编译器对语法要求得更加严格和准确。
       语法错误通常也是最早出现和需要排除的。大多数情况下,解释器和编译器会指出行号和所在行中的字符位置,以及在相应的位置上缺少的内容。下面举一个简单的例子,如下所示的这样一段程序:
       <%
       Response.Write "The repayments for your loan are $" & chrPayment _
                            & " per " & strInterval & , due on the " &strDay & " of each "
                            & strInterval & "."
       %>
       我们希望得到下面的结果:
       The repayments for your loan are $124.50 per month, due on the 12th of each month.
       实际上得到的结果如图7-1所示:

图7-1  程序执行结果1
       豆豆注:
              如果你