【发布时间】:2019-10-28 18:46:19
【问题描述】:
这与另一个问题不相同,因为另一个问题中的建议对我不起作用。我特别想确定在我的情况下这不起作用的不同之处。
我正在使用经典 ASP。根据我在网上找到的文档(此处和其他地方:https://www.w3schools.com/ASp/asp_ref_error.asp),ASP 错误对象应具有以下属性,其中包括:
- 描述:返回错误的简短描述
- 文件:返回产生错误的 ASP 文件的名称
- 行:返回检测到错误的行号
- 数字:返回错误的标准 COM 错误代码
我有以下测试代码。注意error_log() 是一个将文本写入日志文件的自定义函数。
on error resume next
blah
if err.number > 0 then
error_log( err.number )
error_log( err.description )
error_log( err.file )
error_log( err.line )
end if
on error goto 0
前两行number和description按预期写入;但file 和line 不是。据我所知,后两个属性根本不适用于我的 ASP/VBScript 副本。为什么我没有这些属性?
我正在运行我认为是最新(大约 2000 年)版本的经典 ASP VBScript。直言不讳:VBScript 5.8 build 16384
编辑:尝试运行 Server.GetLastError() 失败。由于某种原因,我似乎没有该命令。 [更正:它运行但似乎没有数据。请参阅下面的示例]
新的最小示例:
On Error Resume Next
blah 'This is our error. unrecognized variable'
Set error = Server.GetLastError()
response.write error.file
On Error Goto 0
response.end
这会导致空白屏幕。没有写入错误数据。
另一个测试。注意“错误”与自动生成的“错误”:
On Error Resume Next
blah 'This is our error. unrecognized variable'
Set error = Server.GetLastError()
response.write error.number
response.write " | "
response.write err.number
response.write "<br>" & vbCrLf
response.write error.description
response.write " | "
response.write err.description
response.write "<br>" & vbCrLf
response.write error.file
response.write " | "
response.write error.line
On Error Goto 0
response.end
结果:
0 | 500
| Variable is undefined
| 0
【问题讨论】:
-
在处理经典 ASP 时使用
Server.GetLastError()。 VBScriptErr对象与ASPError对象不同。 -
没有骰子。不确定我是否正确使用了 server.getlasterror。我只是将它设置为一个变量吗?
Set err = Server.GetLastError()然后打电话给err.file还是什么?Server.GetLastError()似乎失败了 -
根据您的具体措辞,我发现了这一点,这有助于:vbsedit.com/html/aebd3a6c-e8a9-4394-9efb-d15c6b92ceb7.asp 但是... 没有办法 获取发生错误的文件或行?
-
“似乎失败了” - 这应该有什么帮助?它是如何失败的,你得到一个语法错误是对象只是空的吗?什么?
标签: asp-classic