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!

.



Relevant Pages

  • Re: Zusammenfassung von Word dateien mit textmarken die in einem s
    ... Das ist wegen deiner Fehlerbehandlung, ... Die Fehler behandlung kannst du auch wieder abschalten mittels ... oder du prüfst ob es die Textmarke gibt und dnur dann greifst du darauf zu. ... On Error Resume Next ...
    (microsoft.public.de.word.vba)
  • Re: API-FindFirstFile Probleme mit Leerzeichen im Pfad?
    ... > die Sache mit dem On Error Resume Next. ... > kaskadierende Fehlerbehandlung, die die Fehler in ... aktiviert diese Fehlerbehandlung, d.h. die Fortsetzung in der auf die ...
    (microsoft.public.de.vb)
  • Re: prüfen auf vorhandenes Textfeld
    ... dass VB anscheinend den Befehl "GoTo Fehler" nicht versteht. ... "On Error GoTo 0" - hab ich mal gelesen. ... Aktiviert oder deaktiviert die Fehlerbehandlung ...
    (microsoft.public.de.excel)
  • Re: Do While Loop ???
    ... Vor der Schleife ein "On Error Resume Next" ... Dort die möglichen Fehler entsprechend behandeln (also im vorliegenden Fall ... Nachher wieder auf normales Fehler-Handling zurückschalten ("On Error Goto ... Und noch ein ganz anderer Ansatz: Nimm statt eines Zählers den Dateinamen ...
    (microsoft.public.de.access)
  • Re: Einstellung der Fehlerbehandlung wird nicht gespeichert
    ... Klassenmodul anhalten" zurück. ... On Error GoTo NotReady ... Die Fehlerbehandlung kannst du mit folgendem Code ändern: ... Du setzt zwar den Fehler mittels Err.clear zurück, ...
    (microsoft.public.de.access)