2009-01-23 83 views

回答

43

有两种方法,您可以使用JScript或VBScript进行编码,这些方法确实具有该构造,或者您可以在代码中对其进行编译。

使用JScript中你会用下列类型的构造:通过使用错误的简历在旁边点

<script language="jscript" runat="server"> 
try { 
     tryStatements} 
catch(exception){ 
     catchStatements} 
finally { 
     finallyStatements} 
</script> 

在你的ASP代码,你掰过来,你就会有一个尝试和检查的Err.Number在像这样的一个点上:

<% 
Dim i 
' Turn on error Handling 
On Error Resume Next 


'Code here that you want to catch errors from 

' Error Handler 
If Err.Number <> 0 Then 
    ' Error Occurred/Trap it 
    On Error Goto 0 ' But don't let other errors hide! 
    ' Code to cope with the error here 
End If 
On Error Goto 0 ' Reset error handling. 

%> 
2

已经有一段时间,因为我是在ASP土地,但IIRC有几种方法:

try catch finally可以在VBS合理模拟(好文章 here here),并有一个活动叫class_terminate你可以看并在全局范围内捕获异常。然后有可能更改您的脚本语言......

+1

很高兴认识的底部添加以下代码,但bejeebus那难看。我会切换脚本语言。 – 2009-01-23 11:36:41

+0

告诉我关于它:-)我必须维护一些旧的项目,并且ASP缺少其他脚本语言现在拥有的很多标准功能...... – 2009-01-23 12:46:27

1

某些方案并不总是允许开发人员切换脚本语言。

我的偏好肯定适用于JavaScript(我已经在新项目中使用了它)。但是,维护较旧的项目仍然是必需的和必要的。不幸的是,这些都是用VBScript编写的。

所以即使这个解决方案没有提供真正的“try/catch”功能,结果也是一样的,这对我来说完成工作已经足够了。

7

一个相当不错的方法来处理这个丢失COM类:

Dim o:Set o = Nothing 
On Error Resume Next 
Set o = CreateObject("foo.bar") 
On Error Goto 0 
If o Is Nothing Then 
    Response.Write "Oups, foo.bar isn't installed on this server!" 
Else 
    Response.Write "Foo bar found, yay." 
End If 
4

对于海纳谁在ASP工作以及更现代的语言,问题就会招来一笑道。根据我的经验,使用自定义错误处理程序(在IIS中设置以处理500; 100错误)是ASP错误处理的最佳选择。本文介绍该方法,甚至为您提供一些示例代码/数据库表定义。

http://www.15seconds.com/issue/020821.htm

4

声明上的错误继续下一步应该放在我们要验证什么上面。

On Error Resume Next 
    'Your code logic is here 

然后用语句结尾,如:

If Err.Number <> 0 then 

    'Your error message goes here' 

    End if 
9

关于Wolfwyrd的前面回答:“在错误继续下一步”其实轮流错误处理掉!不开。On Error Goto 0会将错误处理重新打开,因为至少我们希望机器能够抓住它,如果我们没有写入自己的话。关=将它交给你处理。

如果您使用On Error Resume Next,则需要注意其中包含多少代码:请记住,短语“If Err.Number <> 0 Then”仅指最前一个触发的错误。

如果您的“On Error Resume Next”之后的代码块有几个地方可能会合理预期它会失败,则必须在每个可能的故障之后放置“If Err.number <> 0”行,检查执行。

否则,在“出现错误继续下一步”之后,就意味着它的含义 - 您的代码可能会按照它喜欢的方式执行尽可能多的行,并且执行过程会继续愉快地进行。这就是为什么这是屁股疼痛。

7

1)添加On Error Resume Next页面

2)的顶部在页面

If Err.Number <> 0 Then 

    Response.Write (Err.Description) 

    Response.End 

End If 

On Error GoTo 0 
相关问题