Lernpfad:Objektorientierte Programmierung mit Java/Systematisch Fehler suchen: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
(Die Seite wurde neu angelegt: „{{Navigation}} Jedem Programmierer passieren Fehler. Je größer das Programm wird, desto größer wird sich die Wahrscheinlichkeit, dass sich ein Fehler eins…“)
Markierungen: Mobile Bearbeitung Mobile Web-Bearbeitung
 
Keine Bearbeitungszusammenfassung
 
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 4: Zeile 4:


Die Suche nach Fehlern ist eine Kunst für sich. Man kann drei Niveaus unterscheiden, wie professionell man dabei vorgeht.
Die Suche nach Fehlern ist eine Kunst für sich. Man kann drei Niveaus unterscheiden, wie professionell man dabei vorgeht.
== Niveau 1: Versuch und Irrtum ==
Anfänger gehen zur Fehlersuche häufig nach dem Versuch-und-Irrtum-Prinzip vor. Dafür startest du das Programm und prüfst, ob es das erwartete Ergebnis produziert. Ist dies nicht der Fall, dann wird im Programm etwas dort geändert, wo der Fehler vermutet wird. Dann wird wieder getestet, ob das Ergebnis nun der Erwartung entspricht.
Dieses Vorgehen ist sehr zeitaufwändig und oft frustrierend, da du nur rätst, wo der Fehler liegt. Da du als Anfänger noch nicht weißt, wo typische Fehlerquellen liegen, suchst du oft an der falschen Stelle und im schlimmsten Fall baust du neue Fehler ein.
Du solltest möglichst schnell versuchen, auf dem nächsten Niveau zu arbeiten. 
== Niveau 2: Logging ==
Etwas gezielter nach Fehlern suchen kannst du, indem du in deinem Programm Ausgaben auf der ''Kommandozeile'' machst. In der Informatik nennt man das ''Logging''.
Die einfachste Variante des Loggings in Java erhältst du mit <code>System.out.println(String)</code>. Dieser Befehl gibt einen String auf der Kommandozeile (oder ''Konsole'') aus. So kannst du insbesondere den Wert einer Variablen zu einem bestimmten Zeitpunkt ausgeben lassen:
<syntaxhighlight lang="java" lines=1 highlight="3">
for( int i = 100; i != 0; i *= -2 ) {
    i = (i-1) % 5;
    System.out.println("i ist "+i);
}
</syntaxhighlight>
Der Nachteil an dieser Methode ist, dass sie schnell und unübersichtlich wird, wenn mehrere Variablen ausgegeben werden sollen. Dann findest du die entscheidenden Ausgaben im Wust der Informationen nicht wieder, und du verfällst wieder in Versuch-und-Irrtum.
Außerdem müssen alle <code>println</code>-Befehle von Hand wieder gelöscht werden. Das vergisst man leicht.
Für die Fehlersuche ist diese Methode nur geeignet, wenn auf die Schnelle der Wert einer bestimmten Variablen geprüft werden soll, oder welche Alternative in einer bedingten Anweisung eingeschlagen wird. Für alles andere solltest du das Werkzeug auf Niveau 3 nutzen.
{{Info:Start}}
Es ist üblich bei der  Programmierung das Logging dennoch einzusetzen, um die Fehlersuche in Zusammenarbeit mit den Nutzern zu erleichtern. Viele Programme produzieren ''Logs'', in denen wichtige Ereignisse stehen. Wenn ein Nutzer einen Fehler findet, kann er das Log an den Entwickler schicken und diesem dadurch die Fehlersuche erleichtern.
{{Info:End}}
== Niveau 3: Der Debugger ==
Alle großen Entwicklungsumgebung haben mittlerweile einen ''Debugger'' eingebaut. So auf {{BlueJ}}. Mit diesem Werkzeug kann ein Programm systematisch und gezielt auf Fehler analysiert werden.
Ein Debugger erlaubt es dir, zur Laufzeit (also während das Programm ausgeführt wird) alle Variablen zu inspizieren. Dazu kann das Programm an beliebigen Stellen abgehalten werden.
== Systematisches Testen ==
== Fragen und Antworten finden ==
{{Inhalt/Übersicht}}
8.581

Bearbeitungen