ASP Classic有哪些选项可用于错误处理?
例如:
我正在使用该Mail.SendMail
功能但是当打开测试服务器时它不起作用,这是正常的.我想测试邮件是否可能,如果没有则继续和/或显示消息.
有任何想法吗?
有两种方法,您可以在JScript或VBScript中编写具有该构造的代码,也可以在代码中捏造它.
使用JScript,您将使用以下类型的构造:
在你的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.
%>
关于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"之后意味着它所说的内容 - 你的代码可以在它喜欢的行数上失败,并且执行将继续快速执行.这就是为什么这是一个痛苦的屁股.
1)On Error Resume Next
在页面顶部添加
2)在页面底部添加以下代码
If Err.Number <> 0 Then Response.Write (Err.Description) Response.End End If On Error GoTo 0
一个相当不错的方法来处理这个缺少的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