在ASP Classic中是否可以像try-catch一样进行错误处理?

San*_*uys 38 error-handling asp-classic

ASP Classic有哪些选项可用于错误处理?

例如:

我正在使用该Mail.SendMail功能但是当打开测试服务器时它不起作用,这是正常的.我想测试邮件是否可能,如果没有则继续和/或显示消息.

有任何想法吗?

Wol*_*yrd 48

有两种方法,您可以在JScript或VBScript中编写具有该构造的代码,也可以在代码中捏造它.

使用JScript,您将使用以下类型的构造:

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

在你的ASP代码中,你可以通过在你尝试的时候使用错误恢复来捏造它,并在捕获点检查err.Number:

<%
' Turn off 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 ' Turn error handling back on for errors in your handling block
   ' Code to cope with the error here
End If
On Error Goto 0 ' Reset error handling.

%>
Run Code Online (Sandbox Code Playgroud)

  • +1.的JavaScript.如果您需要它,请忘记VBscript使用javascript. (2认同)

小智 10

关于Wolfwyrd的anwer:"On Error Resume Next"实际上关闭了错误处理!不开.On Error Goto 0将错误处理重新打开,因为至少我们希望机器能够捕获它,如果我们没有自己编写它.关=留给你处理它.

如果你使用On Error Resume Next,你需要注意你之后包含多少代码:记住,短语"If Err.Number <> 0 Then"仅指最先触发的错误.

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

否则,在"on next resume next"之后意味着它所说的内容 - 你的代码可以在它喜欢的行数上失败,并且执行将继续快速执行.这就是为什么这是一个痛苦的屁股.


小智 8

1)On Error Resume Next在页面顶部添加

2)在页面底部添加以下代码

If Err.Number <> 0 Then

  Response.Write (Err.Description)   

  Response.End 

End If

On Error GoTo 0
Run Code Online (Sandbox Code Playgroud)


svi*_*nto 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
Run Code Online (Sandbox Code Playgroud)


小智 5

On Error Resume Next语句应该放在我们要验证的内容之上。

  On Error Resume Next
  'Your code logic is here
Run Code Online (Sandbox Code Playgroud)

然后以如下语句结束:

  If Err.Number <> 0 then

  'Your error message goes here'

  End if
Run Code Online (Sandbox Code Playgroud)