ASP 的错误处理集锦 ASP 的错误处理集锦 关 键 字 : asp err 错 误 处 理 添 加 数 据 库 err.description err.line [Microsoft][ODBC driver Manager] data Source name Not found and no Default specified 忽略错误 on asp 忽略错误 ASP 中的 err 错误处理 Error Resume Next 简单介绍 ASP 是非常简单的,以至于许多的开发者不会去思考错误处理。错误处理能 够让你的应用程序更加合理。我看到过很多个用 ASP 编写的商业网站,大多数都 忽略了错误处理。 错误的类型 有三种主要的错误类型: 1.编译错误: 这种错误出现一般都是代码的语法问题。 因为编译错误而导致辞 ASP 停止运 行。 2.运行错误: 这个错误是发生在你准备运行 ASP 时的。 例如: 如果你试图给一个变量赋值, 但是却超出了该变量允许的范围。 3.逻辑错误: 逻辑错误是最难被发现的,这种错误经常是一种结构错误,电脑是发现不了 的。这就需要我们彻头彻尾地检查我们的代码。 因为编译错误一般是和逻辑错误一起发生的,一般都能显示出来,所以我们 担心的就只是运行错误。它都终止 ASP 的运行,而且给用户丢下一堆很不友好的 文字。 那么我们要怎样处理运行错误呢? 我们先来看看, 唯一提供给我们的错误命令---On Error Resume Next(这 ASP 里提醒一下初学者,在 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 "显示错误信息给用户 %>
C0C0C0">
An error occurred in the execution of this ASP page
Please report the following information to the support desk Page Error Object
错误 Number: <%= Err.Number %>
错误信息: <%= Err.Description %>
出错文件: <%= Err.Source %>
出错行: <%= Err.Line %>
HTML> <%End If%> 你们上面看到了,48"U 网~y 专.Gx!0{ehw 网无我首先设置 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 更多高级的处理办法 当一个错误发生时,你们也可以显示更多的错误信息。下面是同时处理数