教程集 www.jiaochengji.com
教程集 >  脚本编程  >  vbscript  >  正文 on error goto与try catch语句介绍

on error goto与try catch语句介绍

发布时间:2014-10-16   编辑:jiaochengji.com
为大家介绍vbscript的on error go和try catch语句,处理错误与捕获异常,有需要的朋友,可以参考下。

VBScript对于处理运行时错误的支持非常的差。
在VBScript中,开发者可以使用的唯一一个错误处理结构是
On Error Resume Next (打开错误处理功能) 和
On Error GoTo 0 (关闭错误处理功能)

为了在ASP 页面里有效的使用这个错误处理结构,可能需要用这些结构包括可能抛出异常的代码,类似这样:
 

<%
Dim myVar
On Error Resume Next
'下面一行代码会在MSXML 4.0没有被安装或者已经损坏的情况下产生错误
'--http://www.jbxue.com
Set myVar = Server.CreateObject("MSXML2.DOMDocument.4.0")
If Err.Number <> 0 Then
' 在这里处理错误
' 结束错误处理,避免以后发生的错误无法被发现
On Error GoTo 0
Else
' myVar 现在指向 MSXML 4.0 DOMDocument的一个实例
' 结束错误处理,避免以后发生的错误无法被发现
On Error GoTo 0
End If
%>

如果要在每一行现有的可能发生错误的代码上使用上面的规则,你的程序马上就会充满 "On Error" 和 "If Err.Number <> 0 Then . . ." 这样的结构。

  而另一方面JScript对于健壮的错误处理机制“结构化异常处理(SEH)”有内建的支持。使用SEH能够让你的软件开发团队顺利的转移到.NET 环境上来,因为SEH是JScript.NET, VB.NET, 和 C#缺省的错误处理机制。(注意:.NET不支持VBScript。)
以下代码执行与VBScript代码相同的操作,但是使用JScript语言并用SEH来处理异常。
 

<%@ LANGUAGE="JScript" %>
<%
var myVar;
try {
myVar = Server.CreateObject("MSXML2.DOMDocument.4.0");
// 如果上面发生了错误,那么catch
// 代码块就会立刻被执行
// 并在myVar上进行必要的操作。
}
catch (e) {
// 在这里处理异常,异常本身可以用
// 'e' 变量进行引用。
}
finally {
// 在这里进行所有收尾工作
// 这段代码不管错误有没有发生
// (也就是“catch”块有没有运行)
// 都会执行。
}
%>

  通过在服务器端使用JScript,你就得到了SEH带来的好处,以及对复杂ASP对象,比方Server,Request和Response对象的完全使用。要把这种脚本语言设置成你的ASP页面的缺省语言,你只需要简单的在你的ASP页面上添加@LANGUAGE指令,就象上面的例子那样。

On Error 语句
该语句的作用是:启用或禁用错误处理程序。
一般用法如下:
On Error Resume Next On Error GoTo 0  

如果在您的代码中未使用On Error Resume Next语句,所发生的运行时错误将显示错误信息,同时,代码的执行也随之终止。

  但当你采用它时,就会使程序按照产生错误的语句之后的语句继续执行,或是按照最近一次所调用的过程(该过程含有 On Error Resume Next 语句)中的语句继续运行。这个语句可以不顾运行时错误,继续执行程序,之后您可以在过程内部建立错误处理例程。

  在调用另一个过程时,On Error Resume Next 语句变为非活动的。所以,如果希望在例程中进行内部错误处理,则应在每一个调用的例程中执行 On Error Resume Next 语句。

  如果您已启用 On Error Resume Next 错误处理程序,则可使用On Error GoTo 0禁用错误处理程序。
    要在代码中生成运行时错误,请用Err对象的Raise方法。
  这样的情况经常在调试程序的时候看见,比如分别调试下面两程序则会显示。

1,err1.asp
 

<%Err.Raise 6%>


技术信息(用于支持人员)错误类型:Microsoft VBScript 运行时错误 (0x800A0006)溢出  

2,err2.asp
 

<%aspxuexi.com%>

  
调试:
技术信息(用于支持人员)错误类型:Microsoft VBScript 运行时错误 (0x800A01A8)缺少对象: 'aspxuexi'  
但当你在首行添加了On Error Resume Next之后,发现不报错提示,表明内部错误处理完成。

3,err3.asp
 

<%
On Error Resume Next
aspxuexi.com
On Error GoTo 0
aspxuexi.com
%>

这时运用了On Error GoTo 0,则会显示出错信息,只不过不是第三行,而是第五行错误了。

您可能感兴趣的文章:
on error goto与try catch语句介绍
再次学习try catch finally
on error resume next使用心得
编程语言中的错误处理
go语言中goto的使用
on error resume next的用法介绍
php goto语句用法简介
PHP语法:goto 语句
Javascript关键字和保留字有哪些
Go语言跳转语句

[关闭]
~ ~