【问题标题】:When am I able to access the ASPError object?我什么时候可以访问 ASPError 对象?
【发布时间】:2009-08-17 10:32:50
【问题描述】:

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

Microsoft VBScript 运行时错误 (500):变量未定义

如果它可以告诉我错误发生在哪个文件/行上,那将更有用。我知道我可以从 Server.GetLastError() 返回的 ASPError 对象中获取此信息,并且在我的项目的其他地方我有一个自定义的 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 中报告的错误消息?

【问题讨论】:

    标签: asp-classic error-handling


    【解决方案1】:

    据我所知,在您当前页面完成处理之前,不会填充 ASPError 对象。它仅用于 500 错误页面。所以理论上,如果您设置了 500 页,则当您遇到错误时,IIS 将执行到该页面的内部重定向,以允许您至少记录错误。只有这样,ASPError 对象才可用。我有过使用 xmlhttprequest 来尝试抓取页面的疯狂想法,但这不是它的工作方式。

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

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

    【讨论】:

    • 嘘。这就是我害怕的。感谢您抽出宝贵时间回复。
    猜你喜欢
    • 2015-11-25
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    相关资源
    最近更新 更多