我正在支持一些经典的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/