小女巫 发表于 2015-1-16 22:34:35

ASP编程:ASP的毛病处置集锦

SQLServer是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。复杂先容
  ASP长短常复杂的,以致于很多的开辟者不会往思索毛病处置。毛病处置可以让你的使用程序加倍公道。我看到过良多个用ASP编写的贸易网站,年夜多半都疏忽了毛病处置。毛病的范例
有三种次要的毛病范例:
1.编译毛病:
  这类毛病呈现一样平常都是代码的语法成绩。由于编译毛病而招致辞ASP中断运转。
2.运转毛病:
  这个毛病是产生在你筹办运转ASP时的。比方:假如你试图给一个变量赋值,可是却超越了该变量同意的局限。
3.逻辑毛病:
  逻辑毛病是最难被发明的,这类毛病常常是一种布局毛病,电脑是发明不了的。这就必要我们彻彻底底地反省我们的代码。
  由于编译毛病通常为和逻辑毛病一同产生的,一样平常都能显现出来,以是我们忧虑的就只是运转毛病。它都停止ASP的运转,并且给用户丢下一堆很不友爱的笔墨。那末我们要如何处置运转毛病呢?
  我们先来看看,ASP独一供应给我们的毛病命令---OnErrorResumeNext(这里提示一下初学者,在ASP中只要OnErrorResumeNext语句,没有OnErrorResumeGoto语句)假如你不利用OnErrorResumeNext语句的话,统统运转毛病城市产生,这个是致命的,那末就会有一段毛病代码“展示”给用户,并且ASP程序也会中断。上面就是一个毛病代码:
  MicrosoftOLEDBProviderforODBCDriverserror80004005  Datasourcenamenotfoundandnodefaultdriverspecified/test.asp,line60
  当我们在程序最下面利用OnErrorResumeNext语句时,一切的毛病城市被疏忽,程序会主动实行下一条语句。如许程序就会完整实行,堕落后用户也不会看到堕落信息。可是如许也有欠好的中央,那就是假如程序没有依照你想像的实行的话,你就很难找到究竟是那里出了成绩,以是你就得在需要的中央对毛病举行处置。
处置毛病
  在ASP中,处置毛病的最好的举措就是在程序最底端放上代码来处置毛病。我也保举在每一个ASP程序都利用缓冲区。如许的话,假如毛病产生,页面就会中断,页面内容也会被扫除,如许用户就不会看到毛病信息,对你们的埋怨也就少了!上面是一个例子:
<%@LANGUAGE="VBScript"%>
<%Response.Buffer=True
"设置buffer为True
OnErrorResumeNext
"入手下手毛病处置
%>
<%"毛病处置
IfErr.Number0Then
"扫除页面
Response.Clear
"显现毛病信息给用户
%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODYBGCOLOR="#C0C0C0">
<FONTFACE="ARIAL">AnerroroccurredintheexecutionofthisASPpage<BR>
Pleasereportthefollowinginformationtothesupportdesk
<P><B>PageErrorObject</B><BR>
毛病Number:<%=Err.Number%><BR>
毛病信息:<%=Err.Description%><BR>
堕落文件:<%=Err.Source%><BR>
堕落行:<%=Err.Line%><BR>
</FONT>
</BODY>
</HTML>
<%EndIf%>
  你们下面看到了,我起首设置OnErrorResumeNext,如许呈现毛病就不会影响程序的实行。
毛病处置和数据库
  在毛病处置中到场数据库的实行是很庞大的。倘使我们有一个程序,有良多的命令去处数据库中增加纪录,假如insert/update在程序的最底部实行,假如我们后面又毛病产生,那就完了!我们就会向数据库中增加了一个毛病的信息。由于我们用了OnErrorResumeNext统统的毛病都被疏忽了!即便后面堕落,程序仍旧会向数据库中增加数据的。
  为制止这类情形,我们就先得做些四肢举动,准确处置的办法以下:
IfErr.Number=0AndobjConnection.Errors.Count=0Then
"这里才干实行语句,由于没有毛病
  SetrstResults=dbData.Execute(txtSql)
EndIf
更多初级的处置举措
  当一个毛病产生时,你们也能够显现更多的毛病信息。上面是同时处置数据库和页面毛病的例子,有了它我们一下就可以发明我们程序中的一切毛病。(因为有些中央我以为英文更能说时成绩,以是没有翻译)。
<%IfErr.Number0Then
  Response.Clear
  SelectCaseErr.Number
    Case8
     "指定毛病的Number
     "在这里处置自界说毛病
    CaseElse
     "一样平常毛病
     IfIsObject(objConnection)Then
      IfobjConnection.Errors.Count>0Then
      %>
      <B>DatabaseConnectionObject</B>
      <% 
       ForintLoop=0ToobjConnection.Errors.Count-1%>
        ErrorNo:<%=objConnection.Errors(intLoop).Number%><br>
Description:<%=objConnection.Errors(intLoop).Description%><BR>
Source:<%=objConnection.Errors(intLoop).Source%><BR>
SQLState:<%=objConnection.Errors(intLoop).SQLState%><BR>
NativeError:<%=objConnection.Errors(intLoop).NativeError%><P>
<%Next
EndIf
EndIf
IfErr.Number0Then%><B>
PageErrorObject</B><BR>
ErrorNumber<%=Err.Number%><BR>
ErrorDescription<%=Err.Description%><BR>
Source<%=Err.Source%><BR>
LineNumber<%=Err.Line%><P>
<%EndIf
EndSelect
EndIf%>
  下面的例子让我们一下了处置了良多在数据库中呈现的成绩,这个在我们一样平常编程也是经常使用的!我们也应当看到谁人SelectCase语句,它能让我们来处置特定的毛病。
Redirect和毛病处置
  有一点我们就当注重一下,就是我们经常使用到的redirect工具,假如一个页面中呈现了redirect工具,那末毛病处置就得到了意义。以是在转向之前我们还得处置一下,以下:
  IfErr.Number=0AndobjConnection.Errors.Count=0Then
   Response.Clear
   Response.Redirect?lt;URLHere>?
  EndIf
把代码变得更划一
  为了让代码变得更划一,起首把毛病处置的文件放在一个包括文件中。如许你就能够在任何文件中利用它。如许修正也便利。在你程序的最上方到场(固然在言语声明以后)OnErrorResumeNext语句。在你实行SQL之前举行毛病反省。利用redirect之前也要举行毛病处置。
让你处置毛病的包括文件在代码的最下面
  我但愿这篇文章对你们有所用,由于我在我们的论坛中已发明有人在问这个成绩了!大概我编译出这篇文章能对你们起些感化。
  复杂先容
  ASP长短常复杂的,以致于很多的开辟者不会往思索毛病处置。毛病处置可以让你的使用程序加倍公道。我看到过良多个用ASP编写的贸易网站,年夜多半都疏忽了毛病处置。毛病的范例
有三种次要的毛病范例:
1.编译毛病:
  这类毛病呈现一样平常都是代码的语法成绩。由于编译毛病而招致辞ASP中断运转。
2.运转毛病:
  这个毛病是产生在你筹办运转ASP时的。比方:假如你试图给一个变量赋值,可是却超越了该变量同意的局限。
3.逻辑毛病:
  逻辑毛病是最难被发明的,这类毛病常常是一种布局毛病,电脑是发明不了的。这就必要我们彻彻底底地反省我们的代码。
  由于编译毛病通常为和逻辑毛病一同产生的,一样平常都能显现出来,以是我们忧虑的就只是运转毛病。它都停止ASP的运转,并且给用户丢下一堆很不友爱的笔墨。那末我们要如何处置运转毛病呢?
  我们先来看看,ASP独一供应给我们的毛病命令---OnErrorResumeNext(这里提示一下初学者,在ASP中只要OnErrorResumeNext语句,没有OnErrorResumeGoto语句)假如你不利用OnErrorResumeNext语句的话,统统运转毛病城市产生,这个是致命的,那末就会有一段毛病代码“展示”给用户,并且ASP程序也会中断。上面就是一个毛病代码:
  MicrosoftOLEDBProviderforODBCDriverserror80004005  Datasourcenamenotfoundandnodefaultdriverspecified/test.asp,line60
  当我们在程序最下面利用OnErrorResumeNext语句时,一切的毛病城市被疏忽,程序会主动实行下一条语句。如许程序就会完整实行,堕落后用户也不会看到堕落信息。可是如许也有欠好的中央,那就是假如程序没有依照你想像的实行的话,你就很难找到究竟是那里出了成绩,以是你就得在需要的中央对毛病举行处置。
处置毛病
  在ASP中,处置毛病的最好的举措就是在程序最底端放上代码来处置毛病。我也保举在每一个ASP程序都利用缓冲区。如许的话,假如毛病产生,页面就会中断,页面内容也会被扫除,如许用户就不会看到毛病信息,对你们的埋怨也就少了!上面是一个例子:
<%@LANGUAGE="VBScript"%>
<%Response.Buffer=True
"设置buffer为True
OnErrorResumeNext
"入手下手毛病处置
%>
<%"毛病处置
IfErr.Number0Then
"扫除页面
Response.Clear
"显现毛病信息给用户
%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODYBGCOLOR="#C0C0C0">
<FONTFACE="ARIAL">AnerroroccurredintheexecutionofthisASPpage<BR>
Pleasereportthefollowinginformationtothesupportdesk
<P><B>PageErrorObject</B><BR>
毛病Number:<%=Err.Number%><BR>
毛病信息:<%=Err.Description%><BR>
堕落文件:<%=Err.Source%><BR>
堕落行:<%=Err.Line%><BR>
</FONT>
</BODY>
</HTML>
<%EndIf%>
  你们下面看到了,我起首设置OnErrorResumeNext,如许呈现毛病就不会影响程序的实行。
毛病处置和数据库
  在毛病处置中到场数据库的实行是很庞大的。倘使我们有一个程序,有良多的命令去处数据库中增加纪录,假如insert/update在程序的最底部实行,假如我们后面又毛病产生,那就完了!我们就会向数据库中增加了一个毛病的信息。由于我们用了OnErrorResumeNext统统的毛病都被疏忽了!即便后面堕落,程序仍旧会向数据库中增加数据的。
  为制止这类情形,我们就先得做些四肢举动,准确处置的办法以下:
IfErr.Number=0AndobjConnection.Errors.Count=0Then
"这里才干实行语句,由于没有毛病
  SetrstResults=dbData.Execute(txtSql)
EndIf
更多初级的处置举措
  当一个毛病产生时,你们也能够显现更多的毛病信息。上面是同时处置数据库和页面毛病的例子,有了它我们一下就可以发明我们程序中的一切毛病。(因为有些中央我以为英文更能说时成绩,以是没有翻译)。
<%IfErr.Number0Then
  Response.Clear
  SelectCaseErr.Number
    Case8
     "指定毛病的Number
     "在这里处置自界说毛病
    CaseElse
     "一样平常毛病
     IfIsObject(objConnection)Then
      IfobjConnection.Errors.Count>0Then
      %>
      <B>DatabaseConnectionObject</B>
      <% 
       ForintLoop=0ToobjConnection.Errors.Count-1%>
        ErrorNo:<%=objConnection.Errors(intLoop).Number%><br>
Description:<%=objConnection.Errors(intLoop).Description%><BR>
Source:<%=objConnection.Errors(intLoop).Source%><BR>
SQLState:<%=objConnection.Errors(intLoop).SQLState%><BR>
NativeError:<%=objConnection.Errors(intLoop).NativeError%><P>
<%Next
EndIf
EndIf
IfErr.Number0Then%><B>
PageErrorObject</B><BR>
ErrorNumber<%=Err.Number%><BR>
ErrorDescription<%=Err.Description%><BR>
Source<%=Err.Source%><BR>
LineNumber<%=Err.Line%><P>
<%EndIf
EndSelect
EndIf%>
  下面的例子让我们一下了处置了良多在数据库中呈现的成绩,这个在我们一样平常编程也是经常使用的!我们也应当看到谁人SelectCase语句,它能让我们来处置特定的毛病。
Redirect和毛病处置
  有一点我们就当注重一下,就是我们经常使用到的redirect工具,假如一个页面中呈现了redirect工具,那末毛病处置就得到了意义。以是在转向之前我们还得处置一下,以下:
  IfErr.Number=0AndobjConnection.Errors.Count=0Then
   Response.Clear
   Response.Redirect?lt;URLHere>?
  EndIf
把代码变得更划一
  为了让代码变得更划一,起首把毛病处置的文件放在一个包括文件中。如许你就能够在任何文件中利用它。如许修正也便利。在你程序的最上方到场(固然在言语声明以后)OnErrorResumeNext语句。在你实行SQL之前举行毛病反省。利用redirect之前也要举行毛病处置。
让你处置毛病的包括文件在代码的最下面
  我但愿这篇文章对你们有所用,由于我在我们的论坛中已发明有人在问这个成绩了!大概我编译出这篇文章能对你们起些感化。
  复杂先容
  ASP长短常复杂的,以致于很多的开辟者不会往思索毛病处置。毛病处置可以让你的使用程序加倍公道。我看到过良多个用ASP编写的贸易网站,年夜多半都疏忽了毛病处置。毛病的范例
有三种次要的毛病范例:
1.编译毛病:
  这类毛病呈现一样平常都是代码的语法成绩。由于编译毛病而招致辞ASP中断运转。
2.运转毛病:
  这个毛病是产生在你筹办运转ASP时的。比方:假如你试图给一个变量赋值,可是却超越了该变量同意的局限。
3.逻辑毛病:
  逻辑毛病是最难被发明的,这类毛病常常是一种布局毛病,电脑是发明不了的。这就必要我们彻彻底底地反省我们的代码。
  由于编译毛病通常为和逻辑毛病一同产生的,一样平常都能显现出来,以是我们忧虑的就只是运转毛病。它都停止ASP的运转,并且给用户丢下一堆很不友爱的笔墨。那末我们要如何处置运转毛病呢?
  我们先来看看,ASP独一供应给我们的毛病命令---OnErrorResumeNext(这里提示一下初学者,在ASP中只要OnErrorResumeNext语句,没有OnErrorResumeGoto语句)假如你不利用OnErrorResumeNext语句的话,统统运转毛病城市产生,这个是致命的,那末就会有一段毛病代码“展示”给用户,并且ASP程序也会中断。上面就是一个毛病代码:
  MicrosoftOLEDBProviderforODBCDriverserror80004005  Datasourcenamenotfoundandnodefaultdriverspecified/test.asp,line60
  当我们在程序最下面利用OnErrorResumeNext语句时,一切的毛病城市被疏忽,程序会主动实行下一条语句。如许程序就会完整实行,堕落后用户也不会看到堕落信息。可是如许也有欠好的中央,那就是假如程序没有依照你想像的实行的话,你就很难找到究竟是那里出了成绩,以是你就得在需要的中央对毛病举行处置。
处置毛病
  在ASP中,处置毛病的最好的举措就是在程序最底端放上代码来处置毛病。我也保举在每一个ASP程序都利用缓冲区。如许的话,假如毛病产生,页面就会中断,页面内容也会被扫除,如许用户就不会看到毛病信息,对你们的埋怨也就少了!上面是一个例子:
<%@LANGUAGE="VBScript"%>
<%Response.Buffer=True
"设置buffer为True
OnErrorResumeNext
"入手下手毛病处置
%>
<%"毛病处置
IfErr.Number0Then
"扫除页面
Response.Clear
"显现毛病信息给用户
%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODYBGCOLOR="#C0C0C0">
<FONTFACE="ARIAL">AnerroroccurredintheexecutionofthisASPpage<BR>
Pleasereportthefollowinginformationtothesupportdesk
<P><B>PageErrorObject</B><BR>
毛病Number:<%=Err.Number%><BR>
毛病信息:<%=Err.Description%><BR>
堕落文件:<%=Err.Source%><BR>
堕落行:<%=Err.Line%><BR>
</FONT>
</BODY>
</HTML>
<%EndIf%>
  你们下面看到了,我起首设置OnErrorResumeNext,如许呈现毛病就不会影响程序的实行。
毛病处置和数据库
  在毛病处置中到场数据库的实行是很庞大的。倘使我们有一个程序,有良多的命令去处数据库中增加纪录,假如insert/update在程序的最底部实行,假如我们后面又毛病产生,那就完了!我们就会向数据库中增加了一个毛病的信息。由于我们用了OnErrorResumeNext统统的毛病都被疏忽了!即便后面堕落,程序仍旧会向数据库中增加数据的。
  为制止这类情形,我们就先得做些四肢举动,准确处置的办法以下:
IfErr.Number=0AndobjConnection.Errors.Count=0Then
"这里才干实行语句,由于没有毛病
  SetrstResults=dbData.Execute(txtSql)
EndIf
更多初级的处置举措
  当一个毛病产生时,你们也能够显现更多的毛病信息。上面是同时处置数据库和页面毛病的例子,有了它我们一下就可以发明我们程序中的一切毛病。(因为有些中央我以为英文更能说时成绩,以是没有翻译)。
<%IfErr.Number0Then
  Response.Clear
  SelectCaseErr.Number
    Case8
     "指定毛病的Number
     "在这里处置自界说毛病
    CaseElse
     "一样平常毛病
     IfIsObject(objConnection)Then
      IfobjConnection.Errors.Count>0Then
      %>
      <B>DatabaseConnectionObject</B>
      <% 
       ForintLoop=0ToobjConnection.Errors.Count-1%>
        ErrorNo:<%=objConnection.Errors(intLoop).Number%><br>
Description:<%=objConnection.Errors(intLoop).Description%><BR>
Source:<%=objConnection.Errors(intLoop).Source%><BR>
SQLState:<%=objConnection.Errors(intLoop).SQLState%><BR>
NativeError:<%=objConnection.Errors(intLoop).NativeError%><P>
<%Next
EndIf
EndIf
IfErr.Number0Then%><B>
PageErrorObject</B><BR>
ErrorNumber<%=Err.Number%><BR>
ErrorDescription<%=Err.Description%><BR>
Source<%=Err.Source%><BR>
LineNumber<%=Err.Line%><P>
<%EndIf
EndSelect
EndIf%>
  下面的例子让我们一下了处置了良多在数据库中呈现的成绩,这个在我们一样平常编程也是经常使用的!我们也应当看到谁人SelectCase语句,它能让我们来处置特定的毛病。
Redirect和毛病处置
  有一点我们就当注重一下,就是我们经常使用到的redirect工具,假如一个页面中呈现了redirect工具,那末毛病处置就得到了意义。以是在转向之前我们还得处置一下,以下:
  IfErr.Number=0AndobjConnection.Errors.Count=0Then
   Response.Clear
   Response.Redirect?lt;URLHere>?
  EndIf
把代码变得更划一
  为了让代码变得更划一,起首把毛病处置的文件放在一个包括文件中。如许你就能够在任何文件中利用它。如许修正也便利。在你程序的最上方到场(固然在言语声明以后)OnErrorResumeNext语句。在你实行SQL之前举行毛病反省。利用redirect之前也要举行毛病处置。
让你处置毛病的包括文件在代码的最下面
  我但愿这篇文章对你们有所用,由于我在我们的论坛中已发明有人在问这个成绩了!大概我编译出这篇文章能对你们起些感化。
由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况;

乐观 发表于 2015-1-19 17:19:01

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

灵魂腐蚀 发表于 2015-1-27 05:16:39

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

小女巫 发表于 2015-2-5 01:34:53

我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。

仓酷云 发表于 2015-2-11 00:47:27

我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.

老尸 发表于 2015-3-1 19:10:38

运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。

山那边是海 发表于 2015-3-10 22:17:52

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

爱飞 发表于 2015-3-17 11:12:03

Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")

深爱那片海 发表于 2015-3-24 09:03:49

交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
页: [1]
查看完整版本: ASP编程:ASP的毛病处置集锦