检查经典中的连接是否正常 ASP
Check if Connection is OK in Classic ASP
有没有一种简单的方法来检查连接字符串是否成功连接到指定的数据库:
场景:
连接字符串示例:
ConnString="DRIVER={MySQL ODBC 5.1 Driver}; SERVER=###.###.####.##; PORT=3306; DATABASE=DbName; USER=DbUser; PASSWORD=DbUser_Pswrd; OPTION=3;"
如果上述失败,例如登录,因为 MySQL 服务器当前处于脱机状态,或者有什么简单的方法可以检查是否存在问题,而不是像解释的那样抛出一般错误 80004005下面?
此问题的解决方案是解决在加载页面时抛出的上述错误,其中代码中的以下行由于连接无法连接到数据库而导致错误:
rs.ActiveConnection = connString
我想在读取上述行之前捕获此连接问题,以便我可以重定向到没有连接字符串的页面并显示一条消息,说明服务器当前处于离线状态等。
我只需要捕获错误代码。
你会在这里使用 on error resume next
,它基本上告诉你的脚本如果它抛出错误就跳过一行并从下一行继续,通过检查 err.number
是否不等于 0
,你可以捕获错误并从那里做任何你想做的事。当您使用 on error goto 0
完成后,我会建议 "disabling" on error resume next
,因为在整个代码中保留它 "enabled" 可能会导致一些不良结果。
以下是您的代码外观的简单示例:
err.clear
on error resume next
rs.ActiveConnection = connString
if err.number<>0 then
'## do whatever you want here
end if
on error goto 0
VBScript 错误处理
在 VBScript 中捕获错误的方法是使用 On Error Resume Next
语句和 Err
VBScript 运行时内置的对象。
Err
对象是什么?
Err
对象用于包含有关在运行时引发的错误的信息,它始终包含最后引发的错误,并随着引发更多错误而不断覆盖自身。
当出现错误时,执行将停止,那么 Err
的意义何在?
这是因为默认错误会停止脚本执行。然而,VBScript 提供了一种机制来忽略这些错误并通过移动到下一个可执行行并填充 Err
对象来继续执行。我们通过在我们希望执行忽略运行时错误的地方放置一个 On Error Resume Next
语句来做到这一点。
It is important to remember that On Error Resume Next
will only ignore runtime errors. Compilation Errors and Syntax Errors will still halt execution of a script.
所以我正在使用 On Error Resume Next
如何捕获错误?
使用 If
语句,一旦出现错误,Err
对象将填充该错误并可以被询问。
On Error Resume Next
'Line we are checking for error. When an error occurs execution will
'move to the next line, in this case the If Err.Number <> 0 Then.
rs.ActiveConnection = connString
If Err.Number <> 0 Then
'Raise a custom error, output error to screen or perform some action.
'Remember to clear the Err object before continuing.
Err.Clear
End If
'We no longer want to ignore errors
On Error Goto 0
Placing the On Error Resume Next
statement resets the Err
object as if the Err.Clear
method had been called.
经典中的常见用法ASP
有时您可能想要检测特定错误并 return 更友好的自定义响应,最简单的方法是从 If Err.Number <> 0 Then
语句构建响应。
If Err.Number <> 0 Then
Response.Write "Error (" & Err.Number & ") occurred: " & Err.Description
End If
一种更复杂的方法是引发您自己的错误,然后其他人可以在执行树的更上层捕获该错误(取决于您的 Web 应用程序的复杂性).
Err.Raise vbObjectError + 1, "My Custom App", "Connection not detected"
您可能还想捕获错误列表,这可以通过使用 Array
或 Scripting.Dictionary
对象来完成,而不是立即输出错误。
Dim errors(), error_count
Dim err_obj
...
'This block could be repeated throughout the code for various
'error checks.
If Err.Number <> 0 Then
ReDim Preserve errors(error_count)
errors(error_count) = Array(Err.Number, Err.Description)
error_count = error_count + 1
End If
...
'Output errors
If IsArray(errors) Then
Response.Write "<p>" & error_count & " error(s) have been detected</p>"
Response.Write "<ol>"
For Each err_obj In errors
Response.Write "<li>Error: " & err_obj(0) & " - " & err_obj(1) & "</li>"
Next
Response.Write "</ol>"
End If
检测可以使用 Select
语句而不是像这样使用经典的 If
语句方法 returned 的各种错误代码;
Select Case Hex(Err.Number)
Case &H800A0006
'Overflow error
Case &H800A000B
'Division by zero error
Case Else
'Anything else
End Select
有用的链接
- VBScript — Using error handling
- Generating Sensible Error Messages Using Err.Raise
有没有一种简单的方法来检查连接字符串是否成功连接到指定的数据库:
场景:
连接字符串示例:
ConnString="DRIVER={MySQL ODBC 5.1 Driver}; SERVER=###.###.####.##; PORT=3306; DATABASE=DbName; USER=DbUser; PASSWORD=DbUser_Pswrd; OPTION=3;"
如果上述失败,例如登录,因为 MySQL 服务器当前处于脱机状态,或者有什么简单的方法可以检查是否存在问题,而不是像解释的那样抛出一般错误 80004005下面?
此问题的解决方案是解决在加载页面时抛出的上述错误,其中代码中的以下行由于连接无法连接到数据库而导致错误:
rs.ActiveConnection = connString
我想在读取上述行之前捕获此连接问题,以便我可以重定向到没有连接字符串的页面并显示一条消息,说明服务器当前处于离线状态等。
我只需要捕获错误代码。
你会在这里使用 on error resume next
,它基本上告诉你的脚本如果它抛出错误就跳过一行并从下一行继续,通过检查 err.number
是否不等于 0
,你可以捕获错误并从那里做任何你想做的事。当您使用 on error goto 0
完成后,我会建议 "disabling" on error resume next
,因为在整个代码中保留它 "enabled" 可能会导致一些不良结果。
以下是您的代码外观的简单示例:
err.clear
on error resume next
rs.ActiveConnection = connString
if err.number<>0 then
'## do whatever you want here
end if
on error goto 0
VBScript 错误处理
在 VBScript 中捕获错误的方法是使用 On Error Resume Next
语句和 Err
VBScript 运行时内置的对象。
Err
对象是什么?
Err
对象用于包含有关在运行时引发的错误的信息,它始终包含最后引发的错误,并随着引发更多错误而不断覆盖自身。
当出现错误时,执行将停止,那么 Err
的意义何在?
这是因为默认错误会停止脚本执行。然而,VBScript 提供了一种机制来忽略这些错误并通过移动到下一个可执行行并填充 Err
对象来继续执行。我们通过在我们希望执行忽略运行时错误的地方放置一个 On Error Resume Next
语句来做到这一点。
It is important to remember that
On Error Resume Next
will only ignore runtime errors. Compilation Errors and Syntax Errors will still halt execution of a script.
所以我正在使用 On Error Resume Next
如何捕获错误?
使用 If
语句,一旦出现错误,Err
对象将填充该错误并可以被询问。
On Error Resume Next
'Line we are checking for error. When an error occurs execution will
'move to the next line, in this case the If Err.Number <> 0 Then.
rs.ActiveConnection = connString
If Err.Number <> 0 Then
'Raise a custom error, output error to screen or perform some action.
'Remember to clear the Err object before continuing.
Err.Clear
End If
'We no longer want to ignore errors
On Error Goto 0
Placing the
On Error Resume Next
statement resets theErr
object as if theErr.Clear
method had been called.
经典中的常见用法ASP
有时您可能想要检测特定错误并 return 更友好的自定义响应,最简单的方法是从
If Err.Number <> 0 Then
语句构建响应。If Err.Number <> 0 Then Response.Write "Error (" & Err.Number & ") occurred: " & Err.Description End If
一种更复杂的方法是引发您自己的错误,然后其他人可以在执行树的更上层捕获该错误(取决于您的 Web 应用程序的复杂性).
Err.Raise vbObjectError + 1, "My Custom App", "Connection not detected"
您可能还想捕获错误列表,这可以通过使用
Array
或Scripting.Dictionary
对象来完成,而不是立即输出错误。Dim errors(), error_count Dim err_obj ... 'This block could be repeated throughout the code for various 'error checks. If Err.Number <> 0 Then ReDim Preserve errors(error_count) errors(error_count) = Array(Err.Number, Err.Description) error_count = error_count + 1 End If ... 'Output errors If IsArray(errors) Then Response.Write "<p>" & error_count & " error(s) have been detected</p>" Response.Write "<ol>" For Each err_obj In errors Response.Write "<li>Error: " & err_obj(0) & " - " & err_obj(1) & "</li>" Next Response.Write "</ol>" End If
检测可以使用
Select
语句而不是像这样使用经典的If
语句方法 returned 的各种错误代码;Select Case Hex(Err.Number) Case &H800A0006 'Overflow error Case &H800A000B 'Division by zero error Case Else 'Anything else End Select
有用的链接
- VBScript — Using error handling
- Generating Sensible Error Messages Using Err.Raise