ASP错误处理

ASP错误处理

ASP是非常简单的,以至于许多的开发者不会去思考错误处理。错误处理能够让你的应用程序更加合理。我看到过很多个用ASP编写的商业网站,大多数都忽略了错误处理。  
错误的类型
有三种主要的错误类型: 
编译错误:
这种错误出现一般都是代码的语法问题。因为编译错误而导致辞ASP停止运行。 
运行错误
这个错误是发生在你准备运行ASP时的。例如:如果你试图给一个变量赋值,但是却超出了该变量允许的范围。 
逻辑错误
逻辑错误是最难被发现的,这种错误经常是一种结构错误,电脑是发现不了的。这就需要我们彻头彻尾地检查我们的代码。 
因为编译错误一般是和逻辑错误一起发生的,一般都能显示出来,所以我们担心的就只是运行错误。它都终止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程序都使用缓冲区。这样的话,如果错误发生,页面就会停止,页面内容也会被清除,这样用户就不会看到错误信息,对你们的抱怨也就少了!下面是一个例子: 
<%
'设置buffer为True
Response.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>
        <%    
        End If
    End Select
End If
%>

上面的例子让我们一下了处理了很多在数据库中出现的问题,这个在我们日常编程也是常用的!我们也应该看到那个Select Case 语句,它能让我们来处理特定的错误。  
Redirect 和错误处理
有一点我们就当注意一下,就是我们常用到的redirect对象,如果一个页面中出现了redirect对象,那么错误处理就失去了意义。所以在转向之前我们还得处理一下,如下:

If Err.Number = 0 And objConnection.Errors.Count = 0 Then

Response.Clear
  Response.Redirect ?lt;URL Here>?

End If

把代码变得更整齐
为了让代码变得更整齐,首先把错误处理的文件放在一个包含文件中。这样你就可以在任何文件中使用它。这样修改也方便。 
在你程序的最上方加入(当然在语言声明之后)On Error Resume Next语句。 
在你执行SQL以前进行错误检查。 
使用redirect以前也要进行错误处理。 
让你处理错误的包含文件在代码的最上面

(0)

相关推荐

  • ASP错误处理

    ASP错误处理 ASP是非常简单的,以至于许多的开发者不会去思考错误处理.错误处理能够让你的应用程序更加合理.我看到过很多个用ASP编写的商业网站,大多数都忽略了错误处理.   错误的类型 有三种主要的错误类型:  编译错误: 这种错误出现一般都是代码的语法问题.因为编译错误而导致辞ASP停止运行.  运行错误 这个错误是发生在你准备运行ASP时的.例如:如果你试图给一个变量赋值,但是却超出了该变量允许的范围.  逻辑错误 逻辑错误是最难被发现的,这种错误经常是一种结构错误,电脑是发现不了的.这

  • ASP错误捕获的几种常规处理方式

    有三种主要的错误类型: 编译错误: 这种错误出现一般都是代码的语法问题. 因为编译错误而导致辞ASP停止运行. 运行错误 这个错误是发生在你准备运行ASP时的. 例如:如果你试图给一个变量赋值,但是却超出了该变量允许的范围. 逻辑错误 逻辑错误是最难被发现的,这种错误经常是一种结构错误,电脑是发现不了的. 这就需要我们彻头彻尾地检查我们的代码. 因为编译错误一般是和逻辑错误一起发生的,一般都能显示出来,所以我们担心的就只是运行错误.它都终止ASP的运行,而且给用户丢下一堆很不友好的文字. 那么我

  • asp错误的几种处理方式

    简单介绍 ASP是非常简单的,以至于许多的开发者不会去思考错误处理,正确处理错误能够让你的应用程序更加合理.我看到过很多个用ASP编写的商业网站,大多数都忽略了错误处理. 有三种主要的错误类型:  编译错误: 这种错误出现一般都是代码的语法问题. 因为编译错误而导致辞ASP停止运行. 运行错误 这个错误是发生在你准备运行ASP时的. 例如:如果你试图给一个变量赋值,但是却超出了该变量允许的范围. 逻辑错误 逻辑错误是最难被发现的,这种错误经常是一种结构错误,电脑是发现不了的. 这就需要我们彻头彻

  • 无效的过程调用或参数: Mid /inc-freehost-function/FreeHostFunction.asp 错误的原因

    这个错误,表明主控端无法正常得到受控端的数据 1.自检这个服务器是否正常. 2.检查这个主机是否开通成功 3.有没有改过池的名称,池的名称必须是 数字_FreeHost_数字 的格式

  • asp,VBscript语法错误,史上最全最详细最精确第1/3页

    ASP错误总结  -------------------------------------------------------------------------------- Microsoft VBscript语法错误(0x800A03E9)-->内存不足 Microsoft VBscript语法错误(0x800A03EA)-->语法错误 Microsoft VBscript语法错误(0x800A03EB)-->缺少 ':' Microsoft VBscript语法错误(0x800

  • 错误类型:Provider (0x80004005)未指定的错误 的一个处理方法

    我的电脑因为用批处理清理文件,所以不能运行了, 只 1.查看数据库连接语句没有发现错误: 2.查看文件夹的权限已经全部给了everyone: 3.打开数据库的同时,系统会在临时文件夹 %SystemRoot%/temp/ 下创建临时文件,而 % SystemRoot%/temp/ 的权限不够 解决:%SystemRoot%/temp/ 的权限加上(IUSER_电脑名的读写) 2.如果一般未指定的错误,还有个办法,先 其实只要很简单的几步.: 开始...运行...regsvr32 jscript.

  • HTTP错误类型小结

    HTTP 400 - 请求无效 HTTP 401.1 - 未授权:登录失败 HTTP 401.2 - 未授权:服务器配置问题导致登录失败 HTTP 401.3 - ACL 禁止访问资源 HTTP 401.4 - 未授权:授权被筛选器拒绝 HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败 HTTP 403 - 禁止访问 HTTP 403 - 对 Internet 服务管理器 (HTML) 的访问仅限于 Localhost HTTP 403.1 禁止访问:禁止可执行访问 HTTP

  • 用ASP实现对ORACLE数据库的操作

    ASP(Active Server Pages)是微软公司为开发互联网应用程序所提出的工具之一,ASP与数据库的联接一般通过ADO(Activex Data Object)来实现的,就象<计算机世界>2000年3月20日的<用ASP对SQL Server数据库操作>文章介绍的一样,ADO可以完全支持Microsoft SQL Server ,但对应用更加广泛.机制更加复杂的ORACLE 数据库服务就有一些困难,如果想作一些简单的查询功能,ADO是足够的,如要想更好地发挥ORACLE

  • win7 iis7.5 乱码 和 解析不了ASP的ADO连接数据库 的解决方法

    你是否发现自己的网站刷新一遍的时候出现乱码呢 好了这里我们就来说说解决的方法...首先说说第一个问题, 这个问题刚开始让自己百思不得其解啊,头疼死的问题 不过自己发现的是个凑巧吧, 因为刚开始配置iis7.5的时候 直接安装了asp.net 虽然没了解过这方面的知识,不过还是发现了asp.net配置过程中会在WEB根目录下生成一个所谓的web.config, 那时候觉得这个文件奇怪 于是直接删除了,然后运行自己的ASP文件发现问题转化了 出现了ODBC连接错误,不过还是一大堆的乱码..好了废话不

  • HTTP状态代码及其定义解析 Ajax捕捉回调错误参考

    HTTP状态代码及其定义解析 Ajax捕捉回调错误参考 状态行包含HTTP版本.状态代码.与状态代码对应的简短说明信息.在大多数情况下,除了Content-Type之外的所有应答头都是可选的.但Content-Type是必需的,它描述的是后面文档的MIME类型.虽然大多数应答都包含一个文档,但也有一些不包含,例如对HEAD请求的应答永远不会附带文档.有许多状态代码实际上用来标识一次失败的请求,这些应答也不包含文档(或只包含一个简短的错误信息说明). 当用户试图通过 HTTP 访问一台正在运行 I

随机推荐