on error goto (Vbscript)和try catch

时间:2008-08-04 13:22:00 

在安装了IIS以后,缺省的服务器端脚本语言被设置成VBScript。许多Web 开发团队在他们的开发环境中保持了这些缺省设置,这是不幸的,因为VBScript对于处理运行时错误的支持非常的差。在VBScript中,开发者可以使用的唯一一个错误处理结构是On Error Resume Next (打开错误处理功能) 和 On Error GoTo 0 (关闭错误处理功能)

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

<% 
Dim myVar 
On Error Resume Next 
'下面一行代码会在MSXML 4.0没有被安装或者已经损坏的情况下产生错误 
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指令,就象上面的例子那样。

标签:IIS,On,Error,错误,asp
0
投稿

猜你喜欢

  • 数据库名词解释

    2008-09-12 17:28:00
  • 如何利用SQL Server来发送电子发邮件?

    2010-01-01 15:37:00
  • 段正淳的css笔记(1)分类之间的横竖线

    2007-11-01 21:47:00
  • SQLServer 连接 EXCEL

    2009-07-09 19:00:00
  • 全局于网站整体的网页设计

    2009-03-27 17:15:00
  • Firebug 必须掌握的技巧

    2009-12-21 20:04:00
  • 爱你就要说出来,来表白吧

    2008-11-23 16:23:00
  • [翻译]标记语言和样式手册 Chapter 1 清单

    2008-01-15 10:26:00
  • 按键标示的设计体验

    2008-08-27 12:06:00
  • 注册表单之电子邮箱

    2008-08-19 17:58:00
  • css样式命名规则

    2008-04-30 12:31:00
  • 用 XSLT 把 XML 数据生成柱状图

    2009-05-19 12:46:00
  • 使用Dreamweaver便捷技巧方法十六则

    2010-07-02 16:28:00
  • 编译asp应用程序成为exe文件

    2008-10-23 14:01:00
  • WEB2.0网页制作标准教程(2)什么是名字空间

    2007-11-13 13:04:00
  • MYSQL中怎样设列的默认值为Now()的介绍

    2008-11-01 16:54:00
  • 挑战! 纯Javascript 重现经典网游! <魔力宝贝>

    2008-10-04 10:37:00
  • 利用aspjpeg组件自动生成产品缩略图asp源代码

    2007-08-10 10:14:00
  • 区别Javascript中的Null与Undefined

    2007-12-13 20:24:00
  • 页面制作的重要性

    2007-10-30 13:14:00
  • asp之家 网络编程 m.aspxhome.com