Wie re-aktivieren Sie die Standard-Fehlerbehandlung in VB6
Ich habe einige code, der mit verschiedenen "On Error Goto" Fehler-Handler an ein paar stellen zu behandeln, einige kaputte hardware von Drittanbietern. Ich war immer ein überlauf-Fehler (gelesen von der Err-variable) in eine routine, die nicht über einen Fehler, Falle aber ist aufgerufen, durch eine routine, die funktioniert. Ich dachte immer, Fehler fallen waren nur gültig in der routine deklariert waren, aber es sieht aus wie ein Fehler in einem Unterprogramm kann es verursachen, zu gehen, um die aufrufende Funktion den Fehler-Falle.
So, ich schaltete die aufrufende Funktion den error trap und fand meine überlauf und alles ist gut. Aber bevor ich das Tat, verbrachte ich einige Zeit versucht zu finden, ein programmmäßiges Weg, um VB um wieder zu seiner Standard-Fehlerbehandlung innerhalb, routine (so würde ich nicht ändern müssen, um außerhalb von code zu Debuggen), aber ich konnte nicht. Der einzige Fehler Befehle, die ich finden konnte:
On Error GoTo [label] On Error Resume Next On Error Goto 0 On Error GoTo -1
alle schalten Sie die manuelle Fehlerbehandlung - gibt es eine Möglichkeit, es zu deaktivieren (zurück auf der VB6-Standard)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erklärt ist das gründlich in die VB6-Handbuch unter Fehlerbehandlung Hierarchie.
On Error Goto 0
deaktiviert die Fehlerbehandlung in der aktuellen Verfahren, nicht in dem Verfahren, von dem es aufgerufen.Wie schon andere gesagt haben, können Sie gehen, um Extras-Optionen-allgemein "und wählen Sie" bei jedem Fehler unterbrechen. Dass effektiv deaktiviert alle Ihre On Error-Anweisungen - die IDE brechen sofort auf jeden Fehler.
Kann irritierend sein, wenn Sie Ihre VB6 code wirft Fehler als Teil des normalen Betriebs. Zum Beispiel, wenn Sie überprüfen, ob eine Datei vorhanden ist, oder wenn der Benutzer die Taste Abbrechen, in einen gemeinsamen Dialog. Sie wollen nicht die IDE zu brechen, jedes mal, wenn auf diesen Linien. Aber haben Sie vielleicht boilerplate-Fehler-Handler in alle Ihre event-handling Verfahren, um das Programm zu stoppen Absturz auf unerwartete Fehler. Aber Sie sind ein ärgernis, wenn Sie Probleme beim Debuggen, da die IDE nicht zu brechen auf die Zeile mit dem Fehler. Ein trick ist, schalten Sie diesen Fehler-Handler, wenn Sie in der IDE ausgeführt, sondern halten Sie in der integrierten ausführbaren Datei. Sie es so machen.
Fallen diese Funktionen in ein Modul.
Dann Sie können schreiben Sie Ihre Fehler-Handler wie diese.
Verkniffen aus hier. Noch ein Tipp - nutzen Sie das Kostenlose add-in MZTools, um automatisch fügen Sie diesen boilerplate-Fehler-Handler. Für die Produktion-Qualität-code, den Sie weiter gehen konnte, und ein Fehler-handler in jeder routine zum erstellen eines ghetto stack-trace. Sie könnten auch log Fehler sofort in jeder-Fehler-handler.
EDIT: Ameise hat richtig darauf hingewiesen, dass
On Error Goto -1
ist ein VB.Net Anweisung und ist nicht gültig in VB6.EDIT: Arvo und OneNerd geschrieben haben, Antworten mit einigen interessanten Diskussion emulieren Endlich Abrüsten Blöcke in VB6 Fehlerbehandlung. Die Diskussion in diese Frage ist auch einen Blick Wert.
Gibt es klare und einfache Möglichkeit zum zurücksetzen der Fehler-status - verwenden Sie keyword-Lebenslauf. Es gibt drei Möglichkeiten:
Resume setzt die Ausführung an errored Zeile Resume Next bei der nächsten Zeile und am wenigsten gesprochen Resume Label weiterhin auf einem label. Sehr nützlich zum erstellen von try-catch-finally-Konstrukte wie in VB6. Entlehnt und modifiziert aus OneNerd Antwort:
Einfach Irren.Klar hilft nicht, wenn einige subsequential Fehler tritt im Finally-block; Lebenslauf Schließlich nicht zurücksetzen interner Fehler auf allerdings.
Es ist ein handliches mit der rechten Maustaste-Menü können Sie schalten Sie die Fehlerbehandlung an-und abschalten. Einfach mit der rechten Maustaste auf ein code-Fenster, und wählen Sie Umschalten, dann können Sie die Einstellung "bei jedem Fehler unterbrechen". Dies wird den Effekt haben, deaktivieren Sie alle Ihre "On Error" - Anweisungen.
Hier ist was ich tun:
Ersten Fehler-handling, wie dieses, wenn notwendig in Ihrer Sub Main() oder Sub Form_Load() Sub:
Nun Fehler eingeschaltet wird.
Nächste, Verwenden Sie die On Error Resume Next " und On Error GoTo {label} Befehle in Kombination mit den Err Objekt. Hier ist ein Beispiel für die Emulation einer try/catch/finally:
/Extras/Optionen/Allgemein/Fehlerbehandlung
Sollte sein, was Sie wollen... Es sollte dazu führen, dass die Fehler die geworfen, und die wiederum wohl entspannen bis zum RTL...
Es ist schon eine lange Zeit, aber ich bin mir ziemlich sicher, dass das, was Sie wollen.
einfach weiter auf die nächste Anweisung, Sie MÜSSEN also viel
Anweisungen in Ihrem code, wo Fehler auftreten KÖNNEN...
Zustimmen LarryF, On Error Goto 0 ausschalten sollten explizite Fehlerbehandlung wurde eingeschaltet On Error Resume Next". Funktionen und Unterprogramme haben Ihren eigenen Bereich für dieses wenn. Von Dr. Scripto bei Microsoft:
Gibt es keine "On Error GoTo -1" also ich habe keine Ahnung, Woher du den hast.
VB6 exception handling ist bedeckt, sehr gründlich in der Anleitung.