Die Visual Basic IDE bietet auch mehrere Fenster an, die Sie zum Debuggen verwenden können und
auch sollten:
| 1.) Das Direktfenster: |
| |
Sie können einen gültigen Ausdruck in das Direktfenster schreiben, und er wird
sofort ausgeführt. Auf diese Art und Weise kann man Funktionen sehr gut testen
und Werte der Variablen ändern oder auch abfragen. Sie können im Direktfenster
eine Codezeile nicht über zwei oder mehr Zeilen mit Hilfe des Unterstrichs verteilen.
Wollen Sie den Wert einer Variablen abfragen, müssen Sie vor den Variablennamen
ein Fragezeichen setzen. Wollen Sie Strukturen oder Schleifen im Direktfenster
verwenden, müssen Sie alles in eine Zeile schreiben und die Abschnitte mittels
Doppelpunkten trennen:
If X = 3 Then
MsgBox "X ist drei."
End If
|
müssen Sie beispielsweise so formulieren:
If X = 3 Then: MsgBox "X ist drei.": End If
|
|
| |
| 2.) Das Lokalfenster: |
| |
Im Lokalfenster können Sie alle Variablen, die sich in der Reichweite der aktuellen
Prozedur befinden, überprüfen. Genauer: Sie erfahren hier den Wert und den Datentyp
der Variablen.
|
| |
| 3.) Das Überwachungsfenster: |
| |
Manchmal ist es notwendig, eine Variable zu überwachen. Wird in Visual Basic
eine Variable überwacht, kann man unter zwei Optionen wählen, zu welchem Zeitpunkt
die Programmausführung unterbrochen werden soll:
-
Sobald der Wert "True"
ist.
- Wenn der Wert geändert wurde.
Das Fenster zeigt den aktuellen Ausdruck an, den Wert und den Datentyp sowie den
Kontext. Der Kontext legt dabei den Gültigkeitsbereich des Ausdrucks fest.
|
| |
| 4.) Das Debugobjekt: |
| |
Sie können das Direktfenster auch programmgesteuert mit Hilfe des Debugobjekts
verwenden. Visual Basic entfernt beim Kompilieren automatisch den Code, der das
Debugobjekt verwendet. Dieses Objekt verfügt nur über zwei Methoden:
-
Debug.Print
Diese Methode schreibt einen String oder den Wert einer Variablen in das
Direktfenster.
-
Debug.Assert
Diese Methode bekommt einen bool'schen Ausdruck als Parameter übergeben
und unterbricht, wenn dieser
"False" ist.
|
| |
| 1.) Syntaxfehler |
| |
Um solche Fehler zu vermeiden, müssen Sie die korrekte Syntax der verwendeten
Prozeduren kennen. Sie müssen alle Parameter auf ihre Richtigkeit überprüfen und
- wenn nötig - richtig stellen, bevor Sie die Prozedur aufrufen. Syntaxfehler sind
in VB meist besonders leicht zu finden, da inkorrekte Codezeilen bereits zur
Entwicklungszeit in der IDE rot markiert werden. Spätestens zur Laufzeit jedoch
meldet sich VB per Meldung über den Fehler zu Wort.
|
| |
| 2.) IDE - Fehler |
| |
Diese Fehler können entstehen, wenn eine Visual-Basic-Prozedur mit der IDE
oder Windows kommuniziert. Visual Basic generiert hierbei aber immer einen
Laufzeitfehler, der Aufschluss über das Problem gibt.
|
| |
| 3.) Betriebssystem-Fehler |
| |
Diese Fehler können eine Unzahl von Ursachen besitzen. Meistens hängt das mit
OLE-Servern oder ActiveX-Komponenten zusammen. Diese Probleme treten erst auf,
wenn Sie die Software ausserhalb der IDE starten.
|
| |
| 4.) Laufzeitfehler |
| |
Visual Basic generiert Laufzeitfehler immer, wenn das Programm eine ungültige
Aktion durchführen will. Wird z.B. eine Datei nicht gefunden oder benötigt eine
Zahl mehr Speicherplatz als der Datentyp aufnehmen kann, erscheint ein solcher
Laufzeitfehler. Visual Basic hat rund 500 mögliche Laufzeitfehler und es gibt
sehr viele mehr, wenn Sie alle Laufzeitfehler der einzelnen Komponenten dazurechnen.
Sie können sich in der VB-Downloadsektion ein kleines Programm inklusive Sourcecode
herunterladen, dass eine Liste aller internen Fehler generiert. Sie finden es
hier.
Man kann diese Laufzeitfehler nicht abschalten, aber man kann Sie auch sinnvoll
einsetzen. Hier gleich ein Beispiel:
Sub FileExists()
Dim Pfad As String
Dim Temp As Long
On Error Resume Next 'Erklärung siehe unten
Pfad = InputBox("Geben Sie einen Pfad mit Dateinamen an:", "Aufforderung")
Temp = GetAttr(Pfad)
If Not (Err = 0) Then
MsgBox "Diese Datei gibt es nicht!", vbCritical
Else
MsgBox "Die Datei wurde erfolgreich lokalisiert.", vbInformation
End If
End Sub
|
|
| |
| 5.) Fehler beim Kompilieren |
| |
Diese Fehler treten auf, wenn Sie das Programm in eine ausführbare Datei
verwandeln wollen. Deaktivieren Sie dann bei den Optionen die Kästchen
"Bei Bedarf" und "Im Hintergrund".
|
| |
| 6.) Menschliche Fehler |
| |
Diese Fehler sind die gefährlichsten, da sie schwer zu finden sind und die IDE hier
nicht helfen kann. Eigentlich hängen diese oft mit anderen zusammen und sorgen dafür,
dass diese überhaupt ausgelöst werden. Solche Fehler treten oft in frisch
programmiertem Code auf, beispielsweise wenn sich der Programmierer bei einem
Variablennamen vertippt und kein "Option
Explicit" verwendet wurde. Die hier sogenannten "menschlichen Fehler"
sind ganz einfach zum größten Anteil Denkfehler der Programmierer.
|
| |
Visual Basic stellt ihnen verschiedene Möglichkeiten zur Fehlerbehandlung zu Verfügung. Mit
folgenden Elementen können Sie zwar keine Laufzeitfehler verhindern, aber abfangen:
- Mit dem Err-Objekt
- Mit "On Error Resume Next"
- Mit der Anweisung "On Error GoTo <Label>"
- Mit der Variable "Erl"
Das
Err-Objekt speichert Informationen über den letzten Fehler. Mit dem
Befehl
Err.Raise kann man auch eigene Fehler generieren. Sie erhalten
die Fehlernummer sowie die Beschreibung des Fehlers aus dem
Err-Objekt.
Das
Err-Objekt hat folgende Mitglieder:
-
Clear
Mit diesem Befehl können Sie das Err-Objekt löschen, d.h. auf
den Standardzustand zurückbringen. Das ist nützlich, damit andere Prozeduren den
Fehler nicht fälschlicherweise auswerten.
-
Description
In dieser Eigenschaft wird die Textmeldung gespeichert, die beim Auftreten des Fehlers
angezeigt werden soll. Man kann diesen Text auch selbst bestimmen.
-
Raise
Diese Methode wird verwendet, um einen Fehler auszulösen. Sie sollten diese Technik
verwenden, wenn Sie eigene Klassen oder Komponenten erstellen.
-
Number
Der Wert dieser Eigenschaft ist die Nummer, die dem Fehler zugeordnet ist.
-
HelpContext und HelpFile
Die Hilfedatei, die in "HelpFile" gespeichert ist, wird
angezeigt, falls der Benutzer mit F1 die Hilfe aufruft. Mit
"HelpContext" wird die Identifikationsnummer des Fehlers
in der Hilfedatei gespeichert.
-
Source
Hier wird der Name des Projekts, das den Fehler ausgelöst hat, gespeichert. Sollte er
in einem Klassenmodul aufgetreten sein, enthält "Source" den
Namen des Projekts gefolgt von einem Punkt und dem Namen des Klassenmoduls
(z.B. Projekt1.clsTest).
-
LastDLLError
Diese Funktion gibt einen Systemfehler zurück, der in einer DLL aufgetreten ist.
"On Error Resume Next" sollte sofort nach
den Deklarationen in einer Prozedur stehen. Das ist die Grundvoraussetzung für die Verwendung
des Err-Objekts. Dadurch ignoriert Visual Basic jeden Fehler und geht
zur nächsten Zeile über. Die Prozedur "FileExist" (s.o.) würde ohne die
Zeile "On Error Resume Next" nicht
funktionieren. Sollte die Zeile nicht vorhanden sein, würde die Prozedur nur funktionieren,
solange man einen gültigen Dateinamen eingibt. Ist der Dateiname ungültig wird die nächste
Zeile, welche das Err-Objekt überprüft, nie ausgeführt.
Mit der Anweisung "On Error GoTo 0" werden
Fehler in den folgenden Codezeilen wieder von VB behandelt und die alte Sprungmarke bzw.
"Resume Next"-Anweisung wird ignoriert.
"On Error Goto <Label>" sollte genau wie
"On Error Resume Next" sofort nach den
Deklarationen innerhalb der Prozedur stehen, wenn es verwendet werden soll. Wenn ein Fehler
auftritt, springt die Ausführung zum definierten Label. Jedoch sollte man Sprünge mit
"GoTo", genauso wie "On Error Goto <Label>" vermeiden, da es
schlechter Programmierstil ist. Dadurch entsteht der berühmte "Spaghetticode".
"Erl" speichert die Zeile, in der der Fehler aufgetreten ist. Man kann
diese Variable jedoch nur gebrauchen, wenn man die Zeilen ständig durchnummeriert, ansonsten
gibt VB einfach nur "0" zurück.
Quellen: VB-Empire.de.vu, SHADOWare.de Letzte Änderung: 18.07.2001 |
©2001 by SHADOWare, Thomas Bachem |