我什么时候能够访问ASPError对象?

时间:2009-08-17 10:32:50

标签: asp-classic error-handling

我已经开始使用ASPUnit对我的经典ASP代码进行单元测试。这一切都很好,我很高兴。唯一的问题是测试生成运行时错误时显示的错误消息。例如,如果我没有在我的函数中的某个地方定义变量,我会得到错误:

Microsoft VBScript runtime error (500): Variable is undefined

更有用的是它是否可以告诉我错误发生在哪个文件/行上。我知道我可以从ASPError对象获取此信息,该对象由Server.GetLastError()和我项目中的其他地方返回。我有一个自定义500错误页面,它利用此方法自动报告崩溃到Fogbugz。但是当我尝试在其他任何地方访问Server.GetLastError时,返回的信息是空白的。例如,以下代码将输出零而不是预期的4。

<%
Option Explicit
On Error Resume Next
aVariable = "hello"
Dim errObj : Set errObj = Server.GetLastError()
Response.Write errObj.Line
%>

这是访问ASPError的正确方法还是只能在自定义错误页面上进行?有没有更好的方法来获取ASPUnit中报告的错误消息?

1 个答案:

答案 0 :(得分:1)

据我所知,在您当前页面处理完毕之前,ASPError对象不会被填充。它仅用于500错误页面。所以理论是当你设置了500页时出现错误,然后IIS将对该页面进行内部重定向,以便至少记录错误。然后,只有那时ASPError对象可用。我有使用xmlhttprequest尝试抓取页面的疯狂想法,但这不是它的工作方式。

简而言之,您无法获得所需的错误消息详细信息。

使用JScript服务器端,您可以使用try catch,它可以访问异常对象,但即使对您来说也没什么好处,没有行号或任何东西。垃圾。