gpt4 book ai didi

asp-classic - 测试对象是否为空会导致 'Object required'错误

转载 作者:行者123 更新时间:2023-12-04 01:33:24 25 4
gpt4 key购买 nike

我正在支持一些经典的ASP页,其中一个使用并重复使用对象 conn 并在.asp页完成处理时或在将页面重定向到另一页之前将其处置。

<%
dim conn
...
set conn = server.CreateObject("adodb.connection")
...
sub cleanUp()
conn.Close
set conn = nothing
end sub
...
sub pageRedirect(url)
call cleanUp()
response.Redirect url : response.End
end sub
...
' very end of file
call cleanUp()%>

我发现如果存在重定向,则会在 conn.Close行得到服务器错误,这是Microsoft VBScript运行时错误'800a01a8'所需的对象。我认为没有理由为什么该行将执行多次,但是为了安全起见,我重写了该函数
sub cleanUp()
if(not (conn Is Nothing)) then
conn.Close
set conn = Nothing
end if
end sub

但是我仍然得到那个确切的错误,现在在 if(not (conn Is Nothing))行!我以为 Is Nothing的目的是在使用变量名称conn之前进行测试,以防止该“需要对象”错误,但是该测试抛出相同的错误。

如果已将conn设置为Nothing,我还可以使用什么其他测试来确保未引用conn?

最佳答案

is nothing用于测试对象引用,如果变量不包含此类引用,则测试无效并引发错误,因此conn仅在将set转换为某种东西后才能进行测试。

你可以;

if isobject(conn) then
if not (conn Is Nothing) then set conn = nothing
end if

关于asp-classic - 测试对象是否为空会导致 'Object required'错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9670120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com