Jetzt lerne ich Java 6

Exceptions werfen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die Idee mag seltsam klingen - manchmal ist es gut, absichtlich eine Exception zu werfen ... Also einen Fehler auszulösen! Helge Maus macht's vor: Sehen Sie sich das an!
07:09

Transkript

Sie werden es kaum glauben: hin und wieder kommen Programmierer tatsächlich auf die Idee, selber Exceptions werfen zu wollen. Dies ist auch manchmal ganz sinnvoll. Stellen Sie sich zum Beispiel vor, Sie schreiben eine Klasse, die Tastatureingaben bearbeiten soll. Nun es gibt irgendjemand irgendwelchen Blödsinn ein, dann lösen Sie einfach eine Exception aus. Und alle Leute, die Ihre Klasse nutzen, können in der Dokumentation sehen: okay, wenn jemand Blödsinn eingibt, löst diese Klasse eine Exception aus. Und die kann ich dann separat bearbeiten. Oder natürlich Sie können diese Exception auch selber in der eigenen Klasse bearbeiten. Also, da steht uns einiges zur Verfügung. Und so sind natürlich auch die Java-Klassen aufgebaut, die Sie mitgeliefert bekommen haben. Wenn wir eine Exception ausgelöst bekommen, weil wir in einem Array einen falschen Index angreifen oder weil wir zum Beispiel durch 0 definieren, dann muss diese Exception natürlich auch vom Programmcode ausgelöst worden sein, den eben die Programmierer beisammen uns geschrieben haben. Also das gleiche System. In diesem wirklich einfachen Beispiel lösen wir jetzt einfach mal eine Exception aus. Und damit wir irgendwas zum Auslösen haben, gehen wir einfach hin und sagen: okay, wir haben einen Integer Zahl und die ist 47. Und schlimmerweise akzeptiere ich alle Zahlen bis auf die Zahl 11. Sobald die Zahl 11 auftaucht, muss eine Exception ausgelöst werden, denn die 11 wäre so eine schlimme Zahl. Also machen wir hier einen Codeblock in unserer Methode und sagen: okay, es tritt die 11 auf, wir müssen einen Fehler werfen. Wie funktioniert es nun? Naja, eine Exception ist vom Prinzip her nichts anderes als die Instanz einer Klasse "Exception". Und die finden wir unter java.lang. - wir werden es jetzt mal so stehen lassen - und wenn wir ein bisschen runterscrollen, dann finden wir hier Exception. Sie erweitert "Throwable", davon hat die ganz viel geerbt. Aber wir können hier diese Klasse Exception nehmen und davon einfach ein Objekt instanziieren. Kein Akt und java.lang wird ja sowieso direkt als Standardpaket mitimportiert, das heißt, wir müssen nun nicht mehr irgendwo ein Import-Statement darübersetzen. Wir können direkt darauf zugreifen, also. Wir wollen eine Exception haben, nennen wir sie "Fehler". Und das ist eine neue Instanz von Exception. Voila! Und schon haben wir schon mal einen Fehler. Wir können sogar hingehen und hier Exception kurz noch mal wählen komplett. Nehm ich die Maustaste: Show Javadoc, dann öffnet sich hoffentlich unser Browser. Und hier drinnen können wir nachschauen: Exception. Wir haben hier verschiedene Konstruktoren und alle diese Konstruktoren verlangen eine String mit einer Massage. Das heißt, wir können sogar eine Fehlermeldung mitgeben. Ist doch eine tolle Sache. Also. Hier haben wir natürlich eine Fehlermeldung bei der Zahl 11. Ist zu erwarten, dass wir hier reinschreiben: "Schlimme Zahl 11 eingegeben!" Heißt also unsere Fehlermeldung. Nun lassen wir den Code mal kurz neu schreiben. Und führen das Ganze mal aus. Nun es passiert doch gar nichts. Hm, klar: haben auch hier 47, ändern wir mal hier auf 11. Sollte mal noch nichts passieren. Also trotzdem mit Sicherheit hier in diesem Code gelandet sind - bringt uns, dass neue Exception anlegen noch nicht für weiter. Denn eine Exception muss geworfen werden. Und um eine Exception zu werfen, gibt es einen eigenen Befehl, und den Sie können sich recht gut merken, das ist nämlich das englische Wort für "werfen" - "throw". Wir gehen hier einfach in eine neue Zeile, das ist ein eigener Befehl und sagen: throw fehler. Damit werfen wir ihn noch. Und wenn wir das jetzt hier mal eintippen, dann bekommen wir hier einen Fehler: "unreported exception java.lang.Exception; must be caught or declared to be thrown" Das bedeutet so viel, wie: Achtung, hier wird 'ne Exception geworfen! Aber jetzt hast du zwei Möglichkeiten: Du musst sie selber in der Methode, in der du stehst fangen - wir stehen übrigens in der main-Methode unseres Programmes. Also in der Methode muss es gefangen werden. Das können wir über Try and Catch machen, wie wir das bereits gesehen haben. Oder du musst deine Methode so deklarieren, dass klar ist nach außen - da kann eine Exception geworfen werden. Und so sind ja, wie gesagt, viele andere Methoden auch deklariert. Und das wäre jetzt für uns der einfachste Weg. Wir sagen einfach der "main" hier, hier hinter der Deklaration, bevor die geschweifte Klammer anfängt: throws Exception Damit ist nach außen klar: Achtung, main kann Exceptions werfen. Und schon ist hier der Fehler weg, denn jetzt sind alle zufrieden. Testen wir es. F6, kompilieren wir es. Sie sehen, wir bekommen tatsächlich eine "Exception in thread "main" und die Fehlermeldung: "Schlimme Zahl 11 wurde eingegeben!" Also jetzt wird die Laufzeitumgebung in unserer Exception aufgefangen, weil kein anderer sich drum kümmern wollte. Nun, wir können natürlich auch diesen Fehler, der da auftreten kann, selber bearbeiten. Das haben Sie schon gelernt, aber wir machen es trotzdem noch mal. Wir legen einen try-Block hier außen herum, und hängen an den try-Block direkt einen Catch an, fangen eine Exception auf, nennen sie hier einfach mal "e". Und bearbeiten nun diese Exception. Wie geben zum Beispiel erstmal eine Fehlermeldung aus. "Hups! Fehler!" Das kennen Sie schon. Und danach können wir aus "e" den String wählen, dann kommt der String raus. Und das Ganze darüber mit System.out PrintLine dann einfach ausgeben lassen. Und damit hätten wir den Fehler selber behandelt. Dann wirft main natürlich den Fehler nicht nach draußen. Lassen wir das Ganze ablaufen und wir sehen hier, jetzt behandeln wir in unserer Methode selbst den Fehler. Und wir bekommen eine entsprechende Ausgabe. Sie haben also gesehen, das ist gar nicht schwer, eigene Fehler zu werfen, diese selber abzufangen, oder nach außen zu deklarieren, dass unsere Methode einfach Fehler wirft. Und, wie gesagt, so arbeiten auch die ganzen Javapakete, die Sie vor sich haben. Und Sie lernen noch in einem der nächsten Filme, wie Sie komplett eigene Fehler schreiben können.

Jetzt lerne ich Java 6

Steigen Sie ein in die Programmierung mit Java 6, lernen Sie die Grundlagen kennen und unternehmen Sie anschließend Ihre ersten Schritte in der objektorientierten Programmierung.

12 Std. 27 min (98 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!