ASP的错误处理

错误|错误处理

  简单介绍
  ASP是非常简单的,以至于许多的开发者不会去思考错误处理。错误处理能够让你的应用程序更加合理。我看到过很多个用ASP编写的商业网站,大多数都忽略了错误处理。 错误的类型
有三种主要的错误类型:
1.编译错误:
  这种错误出现一般都是代码的语法问题。因为编译错误而导致辞ASP停止运行。
2.运行错误:
  这个错误是发生在你准备运行ASP时的。例如:如果你试图给一个变量赋值,但是却超出了该变量允许的范围。
3.逻辑错误:
  逻辑错误是最难被发现的,这种错误经常是一种结构错误,电脑是发现不了的。这就需要我们彻头彻尾地检查我们的代码。
  因为编译错误一般是和逻辑错误一起发生的,一般都能显示出来,所以我们担心的就只是运行错误。它都终止ASP的运行,而且给用户丢下一堆很不友好的文字。 那么我们要怎样处理运行错误呢?
  我们先来看看,ASP唯一提供给我们的错误命令---On Error Resume Next(这里提醒一下初学者,在ASP中只有On Error Resume Next语句,没有On Error Resume Goto语句) 如果你不使用On Error Resume Next语句的话,一切运行错误都会发生,这个是致命的,那么就会有一段错误代码“展现”给用户,而且ASP程序也会停止。 下面就是一个错误代码:
   Microsoft OLE DB Provider for ODBC Drivers error 80004005 [Microsoft][ODBC Driver Manager]   Data source name not found and no default driver specified /test.asp, line 60
  当我们在程序最上面使用On Error Resume Next语句时,所有的错误都会被忽略,程序会自动执行下一条语句。这样程序就会完全执行,出错后用户也不会看到出错信息。但是这样也有 不好的地方,那就是如果程序没有按照你想像的执行的话,你就很难找到到底是哪里出了问题,所以你就得在必要的地方对错误进行处理。
处理错误
  在ASP中,处理错误的最好的办法就是在程序最底端放上代码来处理错误。我也推荐在每个ASP程序都使用缓冲区。这样的话,如果错误发生,页面就会停止, 页面内容也会被清除,这样用户就不会看到错误信息,对你们的抱怨也就少了!下面是一个例子:
<%@ LANGUAGE="VBScript" %>
<%Response.Buffer = True
"设置buffer为True
On Error Resume Next
"开始错误处理  
%>
<%"错误处理
If Err.Number <> 0 Then
"清除页面
Response.Clear
"显示错误信息给用户
%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY BGCOLOR="#C0C0C0">
<FONT FACE="ARIAL">An error occurred in the execution of this ASP page<BR>
Please report the following information to the support desk
<P><B>Page Error Object</B><BR>
错误 Number: <%= Err.Number %><BR>
错误信息: <%= Err.Description %><BR>
出错文件: <%= Err.Source %><BR>
出错行: <%= Err.Line %><BR>
</FONT>
</BODY>
</HTML>
<%End If%>
  你们上面看到了,我首先设置On Error Resume Next ,这样出现错误就不会影响程序的执行。
错误处理和数据库
  在错误处理中加入数据库的执行是很复杂的。假若我们有一个程序,有很多的命令去向数据库中添加记录,如果insert/update在程序的最底部执行,如果我们前面又错误发生,那就完了!我们就会向数据库中添加了一个错误的信息。因为我们用了On Error Resume Next 一切的错误都被忽略了!即使前面出错,程序依旧会向数据库中添加数据的。
  为避免这种情况,我们就先得做些手脚,正确处理的方法如下:
If Err.Number = 0 And objConnection.Errors.Count = 0 Then
"这里才能执行语句,因为没有错误
  Set rstResults = dbData.Execute(txtSql)
End If
更多高级的处理办法
  当一个错误发生时,你们也可以显示更多的错误信息。下面是同时处理数据库和页面错误的例子,有了它我们一下就能发现我们程序中的所有错误。 (由于有些地方我觉得英文更能说时问题,所以没有翻译)。
<% If Err.Number <> 0 Then
  Response.Clear
  Select Case Err.Number
    Case 8
     "指定错误的Number
     "在这里处理自定义错误
    Case Else
     "一般错误
     If IsObject(objConnection) Then
      If objConnection.Errors.Count > 0 Then
      %>
      <B>Database Connection Object</B>
      <%  
       For intLoop = 0 To objConnection.Errors.Count - 1 %>
        Error No: <%= 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
            End If
         End If
         If Err.Number <> 0 Then %> <B>
           Page Error Object</B><BR>
           Error Number <%= Err.Number %><BR>
           Error Description <%= Err.Description %><BR>
           Source <%= Err.Source %><BR>
           LineNumber <%= Err.Line %><P>

时间: 2024-08-30 19:19:22

ASP的错误处理的相关文章

以前收集的一些资料---使用ASP的错误陷阱实现网站虚拟目录功能

错误|虚拟目录                 使用ASP的错误陷阱实现网站虚拟目录功能    我想大家一定都看见过在很多提供个人主页的网站上有这个虚拟目录功能.就是http://xxx.xxx.xxx/~Batman就会连接到我的主页上(假设我有这个主页,呵呵)    那么我们怎么使用纯粹的ASP技术来实现这个功能了,例如在chinaasp上如果联接是http://www.chinaasp.com/~Batman就会自动连接到与Batman有关的个人信息上呢?    下面将介绍一种使用ASP的

ASP.NET错误信息:至少一个参数没有被指定值

asp.net|错误 "/WebSite1"应用程序中的服务器错误.-------------------------------------------------------------------------------- 至少一个参数没有被指定值. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Data.OleDb.OleDbException: 至少一个参数没有被指

ASP.NET错误搜集整理

asp.net|错误 1.超过了最大请求长度 测试上传文件代码,默认ASP.NET允许最大一次上传2M大小的文件,我在自己的服务器上传一个网易泡泡的安装程序POPO.exe文件时候产生这个错误. 参考文章: Asp.net中,上传文件的默认大小是4096 KB,也就是4M,不过你可以在Web.config中更改这个数据. <system.web>  <!-- 增加上传文件限制为8M -->                      <httpRuntime maxReques

asp.net错误页面处理示例分享

 这篇文章主要介绍了asp.net错误页面处理示例,需要的朋友可以参考下 1.新建Golbal.asax  代码如下: void Application_Error(object sender, EventArgs e)  {     Exception objErr = Server.GetLastError().GetBaseException();     string error = "发生异常页: " + Request.Url.ToString() + "<

asp.net错误处理Application

 Application_Error事件与Page_Error事件相类似,可使用他捕获发生在应用程序中的错误.由于事件发生在整个应用程序范围内,因此您可记录应用程序的错误信息或处理其他可能发生的应用程序级别的错误 ASP.NET错误处理方法Application_Error事件举例如下:   新建web程序--新建AppEvent.aspx页面--在该页面中添加如下代码:    代码如下: <SCRIPT language=C# runat="server"> void P

请问这个是asp.net错误是什么原因啊?请高手指点

问题描述 错误CS0012:类型"CLL.Model.MemberBaseInfo"在未被引用的程序集中定义.必须添加对程序集"Model,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"的引用请问这个是asp.net错误是什么原因啊?请高手指点,非常感谢! 解决方案 解决方案二:web.config里<assemblies><addassembly="System.Design,V

百度ueditor编辑器部署ASP网站错误:百度编辑器ueditor部署服务器,浏览网页用户无法上传文件。

问题描述 报错信息:(本地能上传文件)--百度ueditor编辑器部署ASP网站错误POSThttp://www.by96.com/admin/ueditor/asp/controller.asp?action=uploadfile&encode=utf-8500(InternalServerError)webuploader.min.js:2b.register.sendwebuploader.min.js:2d.execwebuploader.min.js:1execwebuploader.

解决IIS7运行ASP提示错误:An error occurred on the server when processing the URL. Please contact the system administrator

原文:解决IIS7运行ASP提示错误:An error occurred on the server when processing the URL. Please contact the system administrator     在WINDOWS7或SERVER2008上安装了IIS7,调试ASP程序时出现以下错误:     An error occurred on the server when processing the URL. Please contact the syste

asp net 错误问题.....

问题描述 asp net 错误问题..... 请问一下这是什么问题,怎么解决? 解决方案 任何问题都可能看到这个页面.因为没有任何有效的异常信息显示.你应该先调试你的程序,或者在web.config中允许输出调试信息,才能看到. 解决方案二: 你编译生成的dll不能被写入,是不是被占用了. 解决方案三: 检查下Temporary Asp.Net Files目录是否有Users组的写入权限,没有加上

javascript asp教程错误处理_ASP基础

The ASPError Object has zero (0) Methods, nine (9) Properties, zero (0) Events, and zero (0) Collections. AspCode AspDescription Category Column Description File Line Number Source The way you access the ASPError Properties is with a Server Method. Y