Freigeben über


Immer noch ein Fehler: Etwas stimmt noch nicht ganz

Aktualisiert: November 2007

In dieser Lektion erfahren Sie, wie Sie einen Logikfehler finden, der nur in bestimmten Situationen auftritt.

In der vorherigen Lektion, Was? Das sollte nicht passieren! Suchen von logischen Fehlern, wurde demonstriert, wie Sie einen Fehler in der Logik finden und beheben. Im Beispielcode für diese Lektion ist immer noch ein Fehler versteckt. Dieser ist schwerer zu finden, da er nur in bestimmten Situationen auftritt.

Testen eines Programms

Wenn Sie als Programmierer ein Programm testen, um zu überprüfen, ob es sich wie gewünscht verhält, haben Sie eine ungünstige Ausgangsposition. Sie wissen, wie das Programm arbeiten sollte. Es ist daher unwahrscheinlich, dass Sie einen Fehler verursachen, der einen logischen Fehler aufdeckt. Ein mit dem Programm nicht vertrauter Benutzer könnte dagegen Aktionen ausführen, an die Sie nicht gedacht haben.

Was passiert beispielsweise, wenn ein Programm die Meilen pro Stunde durch die Division der zurückgelegten Meilen durch die für die Reise benötigte Zeit berechnet, der Benutzer für die Stunden oder die Meilen aber 0 (null) eingibt? Erfahren Sie es anhand einer Übung.

Übung

So testen Sie das Programm

  1. Öffnen Sie das in der vorherigen Lektion, Was? Das sollte nicht passieren! Suchen von logischen Fehlern, erstellte LogicErrors-Projekt.

    Hinweis:

    Wenn Sie das vorherige Projekt nicht abgeschlossen oder gespeichert haben, müssen Sie zurückgehen und es beenden, bevor Sie fortfahren können.

  2. Drücken Sie F5, um das Programm auszuführen. Geben Sie im ersten Textfeld 0 (für die Minuten) und im zweiten Textfeld 5 (für die Meilen) ein, und klicken Sie dann auf Button1.

    Ein Meldungsfeld wird angezeigt und informiert Sie darüber, dass die Durchschnittsgeschwindigkeit unendlich ist.

    Lassen Sie das Projekt geöffnet. In der nächsten Prozedur wird demonstriert, wie Sie den logischen Fehler finden.

5 geteilt durch 0 (null) = unendlich?

Das in der vorherigen Prozedur erzielte Ergebnis "Unendlich" entspricht sicher nicht Ihrer Erwartung, mathematisch ist es jedoch korrekt: 0 (null) passt unendlich oft in 5. Dieses Ergebnis ist für Benutzer des Programms aber nicht hilfreich. Können Sie sich eine Möglichkeit vorstellen, wie Sie dieses Ergebnis verhindern?

Sie könnten ggf. einen Fehlerhandler hinzufügen, eine Prozedur, die Sie in der Lektion Vorgehensweise bei Problemen: Behandeln von Fehlern kennen gelernt haben. In diesem Fall würde das jedoch nicht funktionieren. Das Ergebnis "Unendlich" ist kein Fehler, es ist einfach nicht das von Ihnen gewünschte Ergebnis.

Da es wahrscheinlich nicht zweckmäßig ist, eine Geschwindigkeit 0 (null) anzuzeigen, besteht eine Möglichkeit zur Behebung des Problems darin, einen Test auf den Wert 0 (null) durchzuführen und den Benutzer ggf. aufzufordern, eine größere Zahl einzugeben. Wenn Sie schon dabei sind, können Sie auch gleich verhindern, dass der Benutzer negative Zahlen eingibt, da diese ebenfalls zu falschen Ergebnissen führen.

In der nächsten Prozedur ändern Sie den Code im Button1_Click-Ereignishandler, damit die GetMPH-Funktion nur aufgerufen wird, wenn die Werte größer als 0 (null) sind.

Übung

So beseitigen Sie den Fehler

  1. Ändern Sie im Code-Editor den Code im Button1_Click-Ereignishandler wie folgt.

    Dim minutes As Integer = CInt(Textbox1.Text)
    Dim miles As Double = CDbl(Textbox2.Text)
    Dim hours As Double = 0
    If minutes <= 0 Or miles <= 0 Then
      MsgBox("Please enter a number greater than zero")
    Else
      hours = minutes / 60
      MsgBox("Average speed " & GetMPH(miles, hours))
    End If
    
  2. Drücken Sie F5, um das Programm erneut auszuführen. Geben Sie im ersten Textfeld 0, ein, und geben Sie im zweiten Textfeld 5 ein. Klicken Sie dann auf Button1.

    Jetzt sollte das Meldungsfeld angezeigt werden, in dem Sie aufgefordert werden, eine Zahl einzugeben, die größer als 0 (null) ist. Versuchen Sie, Ihr Programm mit anderen Zahlenkombinationen zu testen, bis Sie davon ausgehen können, dass der Bug behoben ist.

Nächste Schritte

In dieser Lektion haben Sie erfahren, wie Sie einen logischen Fehler, der ein unerwartetes Verhalten zur Folge hat, finden und beheben. In der nächsten Lektion wird demonstriert, wie Sie im Code Kommentare verwenden.

Nächste Lektion: Notizen in eigenen Programmen: Verwenden von Kommentaren

Siehe auch

Aufgaben

Was? Das sollte nicht passieren! Suchen von logischen Fehlern

Vorgehensweise bei Problemen: Behandeln von Fehlern

Erkennen von Fehlern: Drei Arten von Programmierfehlern

Suchen von Fehlern: Einführung in das Debuggen in Visual Basic

Referenz

/-Operator (Visual Basic)