Java 7 Grundkurs

Ausnahmen abfangen und behandeln

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Um (Eingabe-)Fehler abzufangen, bietet Ihnen Java die Schlüsselwörter "try" und "catch". Damit können Sie auf erwartete Probleme adäquat reagieren und eine Fehlerbehandlung einleiten. Mehr dazu hier.
07:28

Transkript

In diesem Video zeige ich, wie Sie Problemsituationen im Programmablauf abfangen und behandeln können. Ich verwende dazu dieses kleine Beispielprojekt Exception Demo. Dieses Programm nimmt mehrere Zeichenketten, wandelt diese in Zahlen um und addiert die Zahlen dann. Schließlich wird die Summe ausgegeben. Im Einzelnen sieht das so aus: Hier wird ein Array angelegt, mit 4 Strings. Diese Strings enthalten 5, 22, 9, 10, aber eben halt als Text, als String, nicht als Zahl. Und dann wird hier eine Variable für die Summe angelegt und mit null initialisiert. Nun gehen wir mit einer Schleife durch dieses Array Eingaben durch und holen uns der Reihe nach die einzelnen Werte in diese Variable Eingabe. Für die Umwandlung von String zu Zahl verwenden wir eine Methode aus der Standard-Bibliothek, nämlich aus der Klasse Integer, die Methode parseInt. Diese erwartet einen String und gibt dann eine Zahl zurück. Wir übergeben unseren String Eingabe und das, was zurückkommt merken wir uns in der Variablen Zahl. Diese addieren wir zur vorhandenen Summe dazu. So gehen wir durch das ganze Array durch, und am Ende geben wir die Summe aus. Wir führen das Programm aus, dass auch alles funktioniert. Drücke ich auf das grüne Knöpfchen und wir sehen, die Summe ist 46. Das hatte noch nicht viel mit Programmproblemen zu tun, deswegen fügen wir jetzt mal eins ein. Dazu erweitere ich mein Array um ein Element, ein weiterer String und zwar der String 4. Für uns ist erkennbar, dass es die Zahl 4 ist, schauen wir mal, was diese parseInt Methode damit macht. Ausführen und plötzlich ist alles rot. Hier steht nun: Exception in thread main. Java.lang.NumberFormatException: For input string: 4. Das Problem ist aufgetreten in der Klasse Integer in Zeile 492, in der Methode parseInt, wurde aufgerufen von einer anderen parseInt Methode, Methode ist überladen; Zeile  527 in der Klasse Integer Java und die wiederum wurde aufgerufen von meiner Klasse Exception Demo in Zeile 18 stimmt, genau hier. Blöd, wenn das Programm abbricht, weil ein Anwender etwas Falsches eingegeben hat. Offensichtlich erzeugt die Methode parseInt eine Exception und da sich niemand um diese Exception kümmert, platzt das Programm. Exception steht für Ausnahme, und diese Methode hat die Ausnahmesituation, dass sie mit dem String 4 nichts anfangen kann. Wir haben nun die Möglichkeit, diese Exception abzufangen. Dazu brauchen wir ein neues Schlüsselwort, und das heißt try, also versuche. Das kommt hier direkt vor die For-Schleife: Try, geschweifte Klammer auf und hinter der geschweiften Klammer zu, von der Vorschleife, kommt jetzt auch eine geschweifte Klammer zu von unserem try. Ich füge noch ein zweites Schlüsselwort, das heißt catch, fange. Mache ich eine runde Klammer auf und hier schreibe ich jetzt rein, was ich gerne fangen möchte: Ich möchte eine Number Format Exception fangen, wenn sie in diesem Block auftreten sollte. Drücke ich Strg+Leertaste, sehe ich, auch NetBeans hat das erkannt, dass diese Exception dort auftreten könnte, ich brauche nur Enter zu drücken. Diese Number Format Exception nenne ich z.B. ex. Sie können Sie auch Klaus nennen, wenn Sie das möchten. Das ist die gleiche Syntax wie bei Methodendeklaration: Typ, Name der Variablen. So, dahinter, hinter der runden Klammer zu, kommt jetzt eine weitere geschweifte Klammer auf, ein Enter, die IDE fügt die geschweifte Klammer zu automatisch hinzu. Hier können wir eine Fehlerbehandlung durchführen. Wir machen keine große Behandlung, wir machen einfach eine normale Fehlermeldung. Können wir knapp halten, schreiben wir hin: Fehler. Wir müssen die Einrückung korrigieren, dazu können wir einfach mit der rechten Maustaste irgendwo rein klicken und auf Format klicken. Oder, wenn Sie ein Fan der Tastenkombinationen sind, Alt+Shift+F, für Format. Dann sehen wir auch besser, wie das Ganze aufgebaut ist. Der Ablauf ist nun Folgender: Mit try beginnt ein geschützter Block, wenn innerhalb dieses geschützten Blocks irgendein Problem auftreten sollte, also irgendeine Exception entstehen sollte, stoppt die virtuelle Maschine die Abarbeitung des Programms geht quasi raus aus dem Programm, baut ein passendes Exception-Objekt und wirft dieses Objekt dann wieder hinein. Der Typ des erzeugten Exception-Objektes zeigt an, um was für eine Art von Fehler es sich handelt. Das Exception-Objekt enthält keinerlei Fehlerbehandlung, es ist einfach nur eine weiße Fahne, die zeigt, hier ist ein Fehler aufgetreten, und zwar Folgender. Nachdem das Exception-Objekt geworfen wurde, kann es vom Catch Block gefangen werden, wenn der Typ, den wir hier deklariert haben, übereinstimmt mit dem Typ des Exception-Objekts. Hier ist das der Fall, haben wir ja dafür gesorgt. D.h., die Abarbeitung des Programms wird fortgesetzt und zwar in Zeile 23. Es wird der kurze Text Fehler ausgegeben und dann ist die Sache erledigt. Das Problem ist abgefangen und behandelt worden, damit kann das Programm normal weiter laufen. Es macht nicht hier direkt nach der Fehlerzeile weiter, sondern nach dem Catch Block. Der Rest hier in diesem Try-Block wird also grundsätzlich übersprungen. Wenn wir das Programm erneut ausführen, sehen wir hier: Keine Exceptions mehr, kein roter Text, nur noch unsere kleine Meldung Fehler und die nun jetzt unvollständige Summe 36. in dem Moment, wo der Fehler auftritt, wird die For-Schleife verlassen, wir können hier also unsere 10 nicht mehr hinzu zählen. Das ist natürlich etwas blöd, lässt sich aber leicht beheben. Wir müssen unser try-catch in die For-Schleife hinein verlegen. Dazu schiebe ich das For um eine Zeile hoch, das mache ich mit Shift+Alt+Pfeil hoch. Jetzt stimmt natürlich die Syntax gerade überhaupt nicht und die geschweifte Klammer zu von unserer For-Schleife, die vor der geschweiften Klammer zu vom try steht, die schieben wir mit Shift+Alt+Pfeil runter direkt vor unser System out printline. Jetzt noch die Einrückungen anpassen, rechte Maustaste Format. Und der Ablauf jetzt sieht folgendermaßen aus: Wir gehen in der Schleife durch das Array durch, eins nach dem anderen. Dann versuchen wir, den String in eine Zahl zu konvertieren und dazuzurechnen; wenn es nicht klappt, fangen wir die entstandene Exception ab, geben einen kurzen Fehler aus, den wir jetzt sogar noch etwas deutlicher machen können, nämlich indem wir sagen, was da den Fehler verursacht hat. Egal ob eine Exception aufgetreten war und behandelt wurde, oder ob keine aufgetreten ist und diese beiden Zeilen ausgeführt wurden, danach geht die Schleife in ihren nächsten Durchlauf und das Ganze so lange, bis wir durchs gesamte Array durch sind. Machen wir das mal. Fehler: 4 ist keine Zahl, und die Summe ist jetzt wieder 46. Alles ist wieder gut. Exception handling, das Behandeln von Ausnahmen, bedeutet, dass wir auf erwartete Probleme adäquat reagieren. Wir schließen den gefährlichen Block in ein Try ein, und setzen darunter ein Catch, mit dem entsprechenden Typ der Exception, die wir erwarten. Im Catch Block erfolgt eine Fehlerbehandlung und danach kann der Programmablauf normal fortgesetzt werden.

Java 7 Grundkurs

Machen Sie sich mit den Grundlagen der Java-Programmierung vertraut und lernen Sie die Syntax der Sprache sowie das Konzept der objektorientierten Softwareentwicklung kennen.

8 Std. 32 min (66 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!