ASP编程:ASP 3.0初级编程(三十一)
asp,你就只能等着微软给你解决,它不乐意你就只好悲催。而且asp跑在windows服务器上,windows服务器跟linux比起来简直弱爆了!编程|初级7.1.2语义或“运转期”毛病语法毛病的发明和处置是使人懊恼的,但在编程中会碰到一些真正“使人镇静”的另外一范例的毛病――语义毛病(semanticerror)或称“运转期”毛病(runtimeerror)。这类毛病仅当运转一个剧本代码或其他程序时才会发明。换句话说完全无效的代码已经由过程注释器或编译器的注释或编译,在实行时发生了毛病。术语“运转期毛病”经由过程是指语义毛病的了局,也就是说这类毛病存在于代码的语义中,今世码运转时它们才酿成可见的。
这类区分来自于这类现实:程序编译器或注释器在处置程序代码之前必需创建一种外部代码的形貌,触及多种布局开首和开头的婚配,以便标明每种布局包括甚么内容,然后剖析每一个句子,以便晓得怎样实行这个句子。比方,假如在程序代码中有一个IfThen…Else…EndIf布局,注释器或编译器做的第一步事情就是剖析哪些语句在“Then”的部分,哪些在“Else”部分。这一步的目标是,在对布局中的If前提举行测试以后,能够决意该到哪一个分支往实行。
编译器(诸如在编程言语像VisualBasic和C++中见到的那种)息争释器(诸如用于像VBScript和JScript那样的剧本言语的注释器)之间真正区分在于:编译器不试图运转程序代码,而是在对源程序举行两次预处置后,构成二进制指令或标记代码,并构成一个.exe文件或.dll文件。注释器不含有代码的文件,而是在运转时慢慢实行。
1.使运转中断的毛病
假如程序中含有一个语义毛病,一般在运转时可失掉提醒。假如侥幸的话,当毛病产生时,程序会中断,如许能够简单地找堕落误地点。比方,上面这段程序界说了一个有六个元素的数组。
<%
DimarrValues(5)toholdsixelements,indexedfrom0to5
ArrValues(6)="Whoops,gotanerror"
%>
假如试图读或设置下标为6的元素值,能够失掉一个运转期毛病,如-7所示:
-7程序实行了局6
注重这里的毛病范例是“runtime”(相称于语义)毛病,而不是语法毛病。毛病信息显现了毛病地点行数和毛病的形貌,有助于我们对照简单地找到响应的毛病。但这是一个复杂的例子,在更庞大的程序代码中,这类毛病大概呈现在一些遍历一些值并把它们加到一个数组中程序中。以下所示:
<%
DimarrValues(5)toholdsixelements
ForintLoop=0TointListCountthenumberofitemsinsomelist
arrValues(intLoop)=Request.Form("SelectedItems")(intListCount)
Next
%>
这类情形下,极可能是失掉了过量的列表条目,大概是数组的索引不敷,依据代码的请求,能够判别是那种毛病,而且可以经由过程增添数组巨细来办理这个毛病。
<%
DimarrValues(10)toholdelevenelements
ForintLoop=0TointListCountthenumberofitemsintsomelist
arrValues(intLoop)=Request.Form("SelectedItems")(intListCount)
Next
%>
大概响应地设置轮回的参数来办理处置这个毛病。
<%
DimarrValues(5)toholdsixelements
IntArrayMax=intListCount
IfintArrayMax>5ThenintArrayMax=5
ForintLoop=0TointArrayMaxonlyaddthefirstsixitems
arrValues(intLoop)=Request.Form("SelectedItems")(intListCount)
Next
%>
很多其他运转期毛病可以使网页运转中断,诸如一些组件或工具的实例化失利,缘故原由是有ProgID毛病,大概是由于组件没有准确安装。在这些情形下,了局老是给出“ActiveXCannotCreateObject”毛病提醒信息,前面随着挪用Server.CreateObject办法的行号。
2.发生毛病了局的毛病
下面提到,假如碰到一个使程序代码中断的运转期毛病,我们多是侥幸的。可是另外一种情形是程序能很好地实行,仿佛甚么也没有产生,最初发生一个毛病的了局。这是最难发明息争决的毛病,由于认识不到那里堕落了。比方,假定有一个网页,这个网页把用户的诞辰作为日期型的值,而且独自显现日期元素(能够把它们作为三个条目加到一个数据库中)。
<%
getthevaluefromtheRequestanddisplayit
datBirthdate=Request.Form("Birthdate")
Response.Write"Thevalueyouenteredis:"&datBirthdate&"<P>"
gettheindividualdateelements
intDay=Day(datBirthdate)
intMonth=Month(datBirthdate)
intYear=Year(datBirthdate)
anddisplaythem
Response.Write"Day:"&Cstr(intDay)&"<BR>"
Response.Write"Month:"&Cstr(intMonth)&"<BR>"
Response.Write"Year:"&Cstr(intYear)&"<BR>"
%>
-8是了局,是用美国日期作风月/日/年显现的,仿佛统统都没有成绩。
-8显现诞辰的屏幕
但是假如输出一个不法日期,大概让输出文本框空着,便失掉一个运转期毛病,如-9所示:
-9毛病提醒屏幕
(1)假如不是一名JScript专家
在寻觅毛病时,这不是一个年夜成绩,由于我们可以敏捷发明为何会呈现毛病。现实上彀页中断运转有助于我们跟踪毛病。但是不测的毛病大概会产生。比方,用JScript重写程序代码,因为不是一名JScript专家,内里呈现一些微小毛病。
<%
//getthevaluefromtheRequestanddisplayit
vardatBirthdate=newDate(Request.Form("Birthdate"));
Response.Write("Thevalueyouenteredis:"+datBirthdate+"<P>");
//gettheindividualdateelements
intDay=datBirthdate.getDay();
intMonth=datBirthdate.getMonth();
intYear=datBirthdate.getYear();
//anddisplaythem
Response.Write("Day:"+intDay.toString()+"<BR>");
Response.Write("Month:"+intMonth.toString()+"&</p>下一页
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) 用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
页:
[1]