马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我想详细了解ASP整站代码与PSP整站代码有什么优缺点,那个更好,更安全,更用容易维护,和管理。。。编程|初级第7章调试和毛病处置
后面已先容了利用ASP所必要的基础妙技,本章要会商的别的一个成绩是当ASP呈现毛病时怎样办,ASP堕落时是甚么情形。当经心编排的ASP页面呈现成绩中断了实行时,用户一样平常失掉的仅是一些用途不年夜的倡议,诸如:点击“革新”按钮,大概“与站点的Web办理员接洽,告知他们你的页面不克不及一般事情了”等等。
本章除供应有效的信息外,还想供应一个匡助地区。我们将具体先容在剧本和页面中毛病怎样呈现,大概发生的毛病范例,和甚么形成了这些毛病。更主要的是,要会商怎样尽量制止毛病的产生,如不克不及制止又怎样妥帖处置。
因而,本章将要切磋页面调试手艺,也就是怎样消费未几的精神和工夫就可以找到毛病并办理成绩。
本章包含以下内容:
・可以呈现的毛病范例。
・怎样避免各类毛病的发生。
・假如不克不及避免毛病产生,怎样妥帖处置这些毛病。
・怎样发明和处置剧本毛病及其他范例的毛病。
・怎样利用定制的毛病页面失掉毛病信息。
・怎样纪录产生的毛病以监督我们的网站。
・创立一个定制毛病网页和一个毛病日记文件。
・供应相干的在线匡助。
本章不触及怎样处置利用ActiveXDataObjects(ADO)会见数据源时呈现的各类特别范例的毛病。像很多组件一样,ADO供应了本人的毛病处置体系,第8章将深切会商这一点。本章将从会商能呈现的各类毛病范例入手下手,使我们可以熟悉这些毛病并接纳响应的措施。
听说,在非洲最暗中的雨林深处,有如许一群程序员,他们的程序代码历来没有呈现不对误。可是,很遗憾他们从没有享用过调试一段不克不及一般事情的使用程序的兴趣。调试程序代码是一个真正充斥康乐的事情,以是我们要面临这个成绩,在调试程序的过程当中查验我们的察看力和横向头脑才能。年夜多半“实在天下”的程序员可以体验这些兴趣是一件功德。
固然,有些人会说,调试程序与其说是判别,不如说是试试看。消费了很多工夫往调试一段有毛病的程序,在某种水平上能够说的确是依附命运。可是,假如第一步从符合的中央入手下手检察,大概会更快地办理成绩。
但这不是程序调试应接纳的举措。从实际上讲,当某段程序运转失利时,应当以逻辑或按次体例跟踪毛病。作为一个伶俐和有履历的程序员,这才是调试经常用的办法,只要专业职员才随便改动程序中变量的值,各处增加Response.Write语句举行调试。
但是,为了可以在逻辑上跟踪程序中的毛病,必需懂得有关毛病怎样呈现方面的基本常识,更主要的是晓得毛病呈现在那里,以便很快就可以找到响应的中央。本章会商的内容是有关程序中可以呈现的分歧品种的毛病,毛病的分歧体现,和怎样纪录和扫除这些毛病。一样主要的是,还将先容怎样制止这些毛病的产生。
本章将从先容大概呈现的分歧品种的毛病入手下手,假如以为你的代码不会呈现任何毛病,能够间接跳到下一章。
7.1毛病的品种
7.1.1语法或“编译”毛病
当我们第一次运转新编写的程序代码时,一般看到的第一种毛病范例是“syntaxerror”。这就是所说的,程序代码上的语法毛病。这就像在写作中利用了毛病的语法,使读者不克不及懂得个中的寄义。而注释器(诸如剧本引擎)和编译器对语法请求得加倍严厉和正确。
语法毛病一般也是最早呈现和必要扫除的。年夜多半情形下,注释器和编译器会指出行号和地点行中的字符地位,和在响应的地位上短少的内容。上面举一个复杂的例子,以下所示的如许一段程序:
<%
Response.Write"Therepaymentsforyourloanare$"&chrPayment_
&"per"&strInterval&,dueonthe"&strDay&"ofeach"
&strInterval&"."
%>
我们但愿失掉上面的了局:
Therepaymentsforyourloanare$124.50permonth,dueonthe12thofeachmonth.
实践上失掉的了局如-1所示:
-1程序实行了局1
豆豆注:
假如你的毛病提醒信息没法呈现“语法毛病”,请将你的WINNTHelpiisHelpcommon500-100.asp做以下改动(加了两行黑体字):
...
DimbakCodepage
bakCodepage=Session.Codepage
Session.Codepage=936
Response.WriteServer.HTMLEncode(objASPError.Category)
IfobjASPError.ASPCode>""ThenResponse.WriteServer.HTMLEncode(","&objASPError.ASPCode)
Response.WriteServer.HTMLEncode("(0x"&Hex(objASPError.Number)&")")&"<br>"
IfobjASPError.ASPDescription>""ThenResponse.WriteServer.HTMLEncode(objASPError.ASPDescription)&"<br>"
blnErrorWritten=False
Response.Write"<B>"
IfobjASPError.Description>""ThenResponse.WriteServer.HTMLEncode(objASPError.Description)&"<br>"
OnlyshowtheSourceifitisavailableandtherequestisfromthesamemachineasIIS
…
文件中第3行是Response.Write语句的第2行。呈报毛病信息时,VBScript注释器疏忽一行中的引诱空格和制表符。以是在数完26个字符以后,能够找到语法毛病的中央,这里分明短少了一个双引号。加上双引号后再运转这个页面,我们能够失掉如-2所示:
-2程序实行了局2
此次又是别的一个复杂毛病。实践上毛病呈现在第3行而不是第4行。我们遗漏了第三行开端的续行符_。程序代码应当是:
<%
Response.Write"Therepaymentsforyourloanare$"&chrPayment_
&"per"&strInterval&",dueonthe"&strDay&"ofeach"_
&strInterval&"."
%>
1.毛病呈现在甚么中央
必要注重的是剧本注释器仅指出所发明毛病的中央,但实践上那儿其实不必定是毛病真正呈现的中央。在上例中,后面三行的语法准确的;并发生响应的输入了局,而恰好是第4行引发成绩,由于这一行是以一种不法字符开首的,剧本注释器没无意识到这一行是上一行的一部分。
如许的毛病是广泛存在的,由于一般我们次要思索的是要输入的文本内容,而不是双引号、连字符(在VBScript中为“&”)、续行符等的准确按次。
关于关头字、外部函数名拼写毛病或函数的不法参数列表而引发的语法毛病,一般对照简单发明,由于毛病信息提醒大概就指出了毛病的实践地位。比方:上面这段代码是想把今天的日期写进页面。
Response.WriteDateAdd(Now(),"d",1)
实践失掉的了局如-3所示:
asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般 |