我希望执行以下操作...提供一个开发人员可以重定向的页面,只要发生错误...就像vb错误连接无法打开或找不到对象...或数据库错误被引发...但是因为我将重定向移动到子页面,页面实际上没有重定向...是否有可能我无法从子目录重定向?看起来很奇怪。
运行引发错误的存储过程
Dim cmd
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = con
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "spReturnDBException"
cmd.Execute
调用句柄错误功能,设置一些会话参数并在必要时重定向
HandleErrors con _
, Request.ServerVariables("PATH_INFO") _
, "An error occurred while trying to save sessions." _
, "Actual Error: " + Err.Description + " EmpNo: " + Session("EmpNo") _
+ ". QueryString: " + Request.Querystring _
, 0
这将是一个名为。
的子sub HandleErrors( connection, WebPagePath, GenericErrorMessage, DebugInfo, Severity)
//Check for vb errors
if Err.Number <> 0 Then
Session("WebPagePath") = WebPagePath
Session("SafeErrorMessage") = GenericErrorMessage 'Session("SafeErrorMessage") + "A connection was dropped while trying to complete sessions."
Session("DebugInfo") = DebugInfo ' Err.Description
Session("LineNo") = Err.Line
Session("StackTrace") = ""
Session("Severity") = Severity
response.redirect("Error.asp")
//error occurs
elseif connection.Errors.count <> 0 then
response.write("a database error occurred.")
// Store safe error message / # in session
Session("WebPagePath") = WebPagePath
Session("SafeErrorMessage") = GenericErrorMessage 'Session("SafeErrorMessage") + "An error has occurred while trying to save sessions."
Session("DebugInfo") = DebugInfo '"Some extra added debug info from the webpage"
Session("LineNo") = 0
Session("StackTrace") = ""
Session("Severity") = Severity
Dim objError
for each objError in connection.Errors
// Store safe error number in session
Session("SafeErrorNumbers") = Session("SafeErrorNumbers") + objError.Description
if connection.Errors.Count > 1 then
Session("SafeErrorNumbers") = Session("SafeErrorNumbers") + "|"
end if
next
response.Redirect("Error.asp")
end if
Err.Clear
end sub
答案 0 :(得分:2)
显示错误行号:
set objError = Server.GetLastError()
strErrorLine = objError.Line
以下是使用Err.line的几个主题:
http://www.daniweb.com/web-development/asp/threads/11615
http://www.sitepoint.com/forums/showthread.php?279612-ASP-Error-Handling.-Err.Line-weird-behavior
答案 1 :(得分:0)
我无法解释为什么你会得到你的结果。我可以告诉您,如果您的代码到达包含Response.Redirect
的行,则无论是否在Sub procdure中都会发生重定向。
我会提出这个建议。停止使用On Error Resume Next
。处理异常是非常痛苦的方法。
而是将HandleErrors
更改为GenerateConnectionError
。它的工作是编写错误源和描述字符串,并故意用用户定义错误号调用Err.Raise
(我倾向于使用1001)。
现在,您的Error.asp
应作为500.100 http状态代码的处理程序安装在应用程序的根目录中。发生脚本错误时,IIS将查看当前错误页面集合以确定要执行的操作。您将此设置为执行URL并将Error.asp
指定为URL。
执行Error.asp时,它会查找有关QueryString
请求的页面的详细信息。在这里,您还可以使用Server.GetLastError
获取ASPError
对象,从中可以获取有关错误的其他详细信息。
使用此方法将详细说明任何脚本错误,而无需开发人员记住用HandleError
代码编写代码。开发人员需要记得在执行使用ADODB.Connection的代码时调用GenerateConnectionError
,即使这样你也可能在.asp包含文件中抽象出来。