Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Java 7 Grundkurs

Eigene Exceptions definieren

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Manchmal benötigt man über die Exception-Klassen der Standardbibliothek hinaus eigene. Wie man diese erstellt, erfahren Sie in diesem Lernvideo.
07:40

Transkript

Für viele Ausnahmen, die in einem Java-Programm auftreten können, sind in der Standard-Bibliothek bereits die Klassen, Exception-Klassen, deklariert. Sie können auch eigene Exception-Klassen erstellen. Wie das geht, zeige ich Ihnen jetzt. Wir erstellen uns zuerst einmal ein neues, leeres Projekt. Also File New Project Java Application Next. Und dieses Projekt nennen wir Eigene Exception. Ein Exception-Objekt zeigt einfach nur durch seinen Typ an, was für ein Fehler aufgetreten ist. Die Fehlerbehandlung muss der Entwickler separat implementieren. Eine eigene Exception-Klasse anzulegen bedeutet nichts weiter, als eine Unterklasse von Exception zu deklarieren. Genau das machen wir jetzt. Also, rechte Maustaste, New Java Class, und dann gebe ich dieser Exception einen Namen. Der Name sollte aussagen, was für ein Problem aufgetreten ist, gefolgt von dem Wort Exception. Und deshalb nenne ich meine Exception jetzt GefährlichesIstPassiertException. Natürlich geben wir auch wieder einen Paketnamen an, und zwar com.video2brain.java7.eigeneException. Finish erzeugt diese Klasse. Wir müssen dafür sorgen, dass sie eine Unterklasse von Exception wird. Das heißt, wir schreiben hinter den Klassennamen extends Exception. Wir sind eigentlich fertig. Was eine Exception ausmacht, erbt unsere Klasse von der Klasse Exception; ein Konstruktor bekommt die Klasse vom Compiler, da wir keinen eigenen Konstruktor angegeben haben. Wir können Objekte davon erzeugen. Wenn wir jetzt mal einen Blick in die Javadoc von Exception werfen, dann sehen wir, dass es hier aber mehrere verschiedene Konstruktoren gibt. Konstruktoren werden nicht vererbt, unsere Klasse bekommt nichts davon ab. Interessant ist dieser zweite Konstruktor. Der ermöglicht es, ein Exception-Objekt zu erzeugen, und eine Nachricht im Konstruktor anzugeben. Die Nachricht kann der Empfänger des Exception-Objekts, ein Catch Block wahrscheinlich, dann mit get-message wieder auslesen. Es kann sinnvoll sein, einen solchen Konstruktor in der eigenen Klasse anzubieten. Machen wir das einfach mal. Klicken wir hierhin. Mit strg+Leertaste bekommen wir eine Liste angezeigt, was wir uns so alles generieren lassen können. Hier ist genau der Konstruktor, den wir haben wollen. Ich drücke auf Enter, dann wird der Konstruktor eingefügt ein Parameter vom Typ String, er heisst Message. Und was macht der Konstruktor? Der leitet weiter an den Konstruktor der Oberklasse und reicht diese Nachricht einfach hoch. Wenn wir einen Konstruktor in eine Klasse einbauen, bekommen wir den Standard-Konstruktor nicht mehr vom Compiler geschenkt. Wenn wir ihn möchten, dann müssen wir ihn einfügen. Das machen wir auf die gleiche Weise: Strg+Leertaste (ganz oben der erste ist es), Enter. Damit haben wir nun die häufigsten Möglichkeiten abgedeckt, ein solches Objekt zu erzeugen, nämlich ganz ohne Parameter dann gibt es auch keine Message oder mit einer Nachricht im Konstruktor übergeben. Die Exception-Klasse selbst ist nun also tatsächlich fertig. Jetzt müssen wir sie verwenden. Wir bauen uns eine Klasse, die etwas gefährliches tut, und wenn das schief geht, diese Exception hier erzeugt. Also, neue Klasse, rechte Maustaste aufs Package-New Java Class. Diese Klasse nennen wir jetzt GefährlichesDing. Finish. Klasse ist da. Dieses GefährlicheDing bekommt jetzt eine, Sie ahnen es vielleicht schon, eine gefährliche Methode. Die Methode braucht nicht mal Parameter, die ist schon gefährlich genug. Und die macht jetzt was ganz Gefährliches. Jetzt testet sie, ob dieses GefährlicheDing funktioniert hat, oder ob es schief gegangen ist. Und wenn es schief gegangen ist, dann erzeugen wir jetzt hier unsere Exception. Wir erzeugen sie nicht nur, wir werfen sie auch gleich. Und das machen wir mit dem Schlüsselwort Throw. Nach Throw muss jetzt irgendein Exception-Objekt folgen, also erstellen wir das mal eben mit New und dann mit Strg+Leertaste spart man wieder eine Menge Tipparbeit. Nehmen wir den Konstruktor mit String-Parameter und übergeben ihm hier noch eine aussagekräftige Fehlermeldung. Der Compiler ist aber noch nicht so ganz glücklich. Er ist nämlich der Meinung: Wenn diese Methode so gefährlich ist, dass eine Exception entstehen könnte, dann sollte ein potentieller Aufrufer das auch wissen. Um das mitzuteilen, müssen wir hier oben noch etwas anfügen. Meine IDE schlägt mir das hier schon vor. Ich klicke mal da drauf. Und dann steht hier @throws clause, da klicke ich mal drauf, und jetzt ist die rote Kringellinie weg. Achten Sie darauf, dass es verschiedene Schlüsselwörter sind. Hier unten steht Throw, das bedeutet Wirf' eine Exception, und das hier oben Throws, d.h. diese Methode könnte eine solche Exception werfen. GefährlichesDing ist fertig und wir können es testen. Dazu bauen wir uns eine Hauptklasse mit einer main-Methode. Rechte Maustaste auf das Paket, New Java Class ich nenne sie EigeneExceptionDemo Finish. Und wir brauchen in dieser Klasse natürlich eine main-Methode. Psvm, Tabulatortaste, und wir haben eine main-Methode. Hier erzeugen wir uns nun ein GefährlichesDing. Strg+Leertaste, Enter, = new GefährlichesDing;. Sie haben das erzeugt, jetzt kommt gleich der spannende Moment. Und zwar rufen wir jetzt die gefährliche Methode auf. Bevor ich Enter drücke, schauen Sie hier oben in die Dokumentation hinein. Dort steht drin Public void gefährlicheMethode throws GefährlichesIstPassiertException. D.h., dass diese Methode eine Exception werfen könnte, ist Teil der Signatur dieser Methode geworden, also das, was man von außen sehen kann. Wie es implementiert ist, kann ich nicht sehen. Jeder, der diese Methode aufrufen möchte, ist nun also gewarnt. Ok, jetzt können wir Enter drücken. Die Warnung zeigt Wirkung. Wir bekommen die Compiler-Meldung, dass diese Methode eine Exception werfen könnte. Damit das Programm nicht abbricht, müssen wir diese Exception fangen, das heißt wir schreiben ein Try und ein Catch drum herum (Strg+Leertaste hilft mir wieder) und Enter. Nennen wir sie x. Hier erfolgt nun eine aufwändige und komplexe Fehlerbehandlung, die ich mal mit dieser Zeile darstelle. Damit wir sehen, dass wir reingekommen sind machen wir noch eine Statusmeldung, und zwar schreiben wir hier Fehler. Und dann gehen wir zum Exception-Objekt und holen uns die Nachricht raus mit get-message. Damit Sie sehen, dass das Programm danach normal weiterläuft, gebe ich hier dahinter noch eine weitere Statusmeldung aus. Jetzt noch alles vernünftig einrücken: Rechte Maustaste, Format. Sieht gleich viel besser aus. Und jetzt können wir unser Programm ausführen. Vorher speichern und dann den grünen Knopf drücken. Ja, das ist meine main-Klasse, OK. Und wir sehen hier: Fehler ist aufgetreten, Fehler wurde gefangen, und danach ist alles wieder gut. In diesem Beispiel haben Sie nun gesehen, wie Sie sich selbst Exception-Klassen deklarieren können um Ausnahmen anzeigen, weitergeben und behandeln zu können, die für Ihre Anwendung spezifisch sind. Versucht Ihr Programm z.B. in einer Datenbank den Kunden mit der Nummer 123 zu finden, und dieser Versuch schlägt aber fehl, dann können Sie natürlich die SQL-Exception der Datenbank in Ihrer Anwendung nach oben weiterreichen. Sie könnten sich auch eine KundeNichtGefundenException bauen und diese stattdessen verwenden. Dann ist für andere Programmteile sichtbar, was da denn schiefgelaufen ist, und was für ein Problem Sie denn nun lösen müssen. Um das Durchreichen der Exceptions müssen Sie sich nicht kümmern, das macht die Laufzeit-Umgebung. Alles was Sie machen müssen, ist nur die Exceptionklassen deklarieren, die Objekte erzeugen und mit Throw werfen.

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!