Das Testen, ob das Objekt Is Nothing ist, führt zu dem Fehler 'Objekt erforderlich'

8

Ich unterstütze einige klassische ASP-Seiten, von denen eine das Objekt conn verwendet und wiederverwendet und entweder bei Beendigung der ASP-Seite oder unmittelbar bevor die Seite auf eine andere Seite umleitet .

%Vor%

Ich habe festgestellt, dass bei einer Umleitung ein Serverfehler direkt an der Zeile conn.Close , Microsoft VBScript-Laufzeitfehler '800a01a8' Objekt erforderlich auftritt. Ich denke, es gibt keinen Grund, warum diese Linie mehr als einmal ausgeführt wird, aber um sicher zu gehen, habe ich die Funktion neu geschrieben.

%Vor%

Aber ich bekomme immer noch genau diesen Fehler, jetzt in der Zeile if(not (conn Is Nothing)) !! Ich dachte, der Zweck von Is Nothing wäre, einen Test zu machen, bevor der Variablenname conn verwendet wird, um genau zu verhindern, dass der Fehler 'object required' auftritt, aber der Test den gleichen Fehler verursacht.

Welchen anderen Test kann ich verwenden, um sicherzustellen, dass conn nicht referenziert wird, wenn es bereits auf Nothing gesetzt wurde?

    
East of Nowhere 12.03.2012, 15:40
quelle

3 Antworten

15

is nothing wird verwendet, um auf eine Objektreferenz zu prüfen, wenn die Variable nicht enthält, dann ist der Test ungültig & amp; löst einen Fehler aus, so dass conn nur getestet werden kann, nachdem% set auf etwas gesetzt wurde.

Sie können;

%Vor%     
Alex K. 12.03.2012, 16:09
quelle
2
  1. Benutze die Option explicit (jedes Mal, wenn ein Skript ohne explizite Option ausgeführt wird, stirbt ein Puppie dort draußen), hättest du das Problem wahrscheinlich früher entdeckt, wie Nilpo erwähnt hat.
  2. Wenn Sie eine Variable, die Sie als Objektreferenz verwenden möchten, verdunkeln und auf Nothing testen, sollten Sie sie zur Initialisierungszeit (*) auf Nothing setzen: dim myObject : Set myObject = Nothing .

(*) Nicht wirklich bei der Initialisierung, weil die Dims behandelt werden, bevor eine Routine startet, aber wenn Sie alle Ihre Dims an der Spitze einer Routine setzen, wird es praktisch gleich sein.

    
AutomatedChaos 13.03.2012 07:10
quelle
-1

Verwenden Sie die Funktion IsNothing . Sie sollten auch überprüfen, ob es ein Objekt ist.

%Vor%

Wenn ich das sage, würde ich es so machen, da es nichts schadet, wenn man eine Variable auf nichts setzt.

%Vor%

Noch wichtiger ist jedoch, dass conn für Ihre Subroutine nicht im Bereich liegt. Sie sollten es wahrscheinlich als Parameter übergeben.

    
Nilpo 12.03.2012 19:54
quelle

Tags und Links