Re: [vbs] on error resume next



*Helmut Schneider* schrieb:


durch was wird "next" definiert. "Diesen Befehl überspringen und den
nächsten abarbeiten" scheint es u.U. nicht zu sein. Wird auch eine
Schleife abgebrochen?


Durch diesen Befehl wird der Error-Handler abgeschaltet, d. h. alle
möglichen Fehler müssen nun vom Kode behandelt werden. Schleifen werden
nicht abgebrochen, im Gegenteil muss damit gerechnet werden, dass eine
Endlosschleife genau dadurch erst entsteht. Wenn z. B. in einer
Do-Schleife auf das Anwachsen einer Datei auf eine bestimmte Grösse
gewartet werden soll oder etwas ähnliches, kann das natürlich nicht
geschehen, wenn diese Datei gar nicht existiert.

Deshalb ist es besser, den Error-Handler nur kurzfristig abzuschalten.
Hier ein Beispiel:

Function ReadReg(ByRef strRegKey)
On Error Resume Next
ReadReg = wshShell.RegRead(strRegKey)
End Function

Wenn der abgefragte Registry-Wert nicht existiert, liefert der
Scripting-Host einen Fehler zurück. Da die Fehlerbehandlung abgeschaltet
wird, kann dieser Fehler in diesem Fragment nicht eintreten. Nachdem die
Funktion beendet wurde, wird die Abschaltung der Fehlerbehandlung durch
den Interpreter wieder rückgängig gemacht, sofern nichts anderes
definiert wurde. Hier kann man sich den Befehl "On Error GoTo 0" also
sparen.

Im Allgemeinen sollte daher die Fehlerbehandlung nur für kurze Zeit
abgeschaltet werden:

On Error Resume Next
fso.MoveFile strFileName, strFileName2
On Error Goto 0
If Err.Number <> 0 Then

Hier sollte das Skript eine eigene Fehlerbehandlungs-Routine aufrufen,
die alle denkbaren Fälle vorsieht. Ein gutes Skript zeichnet sich m. E.
dadurch aus, dass möglichst wenig von der Abschaltung der
Fehlerbehandlung Gebrauch gemacht wird.

Näheres dazu:
http://download.microsoft.com/download/winscript56/Install/5.6/W98NT42KMe/DE/scd56de.exe
http://www.microsoft.com/downloads/details.aspx?familyid=01592C48-207D-4BE1-8A76-1C4099D7BBB9&displaylang=en
http://www.google.de/search?hl=de&q=%22On+Error+Resume+Next%22&btnG=Suche&meta=

~:>)
Rüdiger

--
Die unter 'Reply-To' angegebene Adresse funktioniert so wie sie ist
ausschliesslich bei direkten Antworten aus der jeweiligen Newsgruppe.
Die unter 'From' angegebene Adresse ist ungültig!

.