„Hallo, Amigo!“

„Hallo, Ellie! Wie ist das Leben?“

„Ausgezeichnet, danke. Wie geht es dir?“

„Super, heute Morgen wurden mir jede Menge neue Dinge erklärt.“

„Na, das ist großartig. Du bist nicht müde?“

„Ja, das ist es. Ich bin ein bisschen müde.“

„Dann hatten Sie einfach Glück. Ich wollte heute ein großes, komplexes Thema behandeln, aber im letzten Moment änderte ich meine Meinung und beschloss, ein kleines, einfaches Thema zu behandeln.“

„Klein und einfach? Ich bin bereit.“

„Heute befassen wir uns ausführlich mit dem Thema Ausnahmen .“

„Sprechen Sie von Fehlerbehandlung?“

„Sie sollten Ausnahmen nicht als Fehler betrachten. Ausnahmen ähneln eher Meldungen, dass „etwas Unerwartetes passiert ist“. Basierend auf diesen Berichten können Sie alternative Maßnahmen vorschlagen.“

„Es dreht sich alles um Methoden.  Wenn Sie eine Methode aufrufen, verspricht sie, das zu tun, wofür sie aufgerufen wurde.

„Wenn eine Methode aus irgendeinem Grund nicht das tun kann, wozu sie aufgerufen wurde, muss sie den Aufrufer darüber informieren.“

„Mit anderen Worten, das Schlimmste, was passieren kann, ist, dass eine Methode ihre Wirkung nicht erfüllt und niemandem davon erzählt. Nichts könnte schlimmer sein als das. Wenn das passiert, verliert man die Kontrolle über die Situation.

„Wenn man ein neuer Programmierer ist, kommt es einem so vor, als würde man nur Methoden aufrufen und sie tun mit Sicherheit das, worum man sie gebeten hat.“

„Wenn Sie ein erfahrener Programmierer sind, wissen Sie, dass es Dutzende von Faktoren geben kann, die die Fähigkeit einer Methode, ihre Aufgabe zu erfüllen, beeinflussen, und dass es viele Fälle gibt, die eine Methode daran hindern könnten, ihre Aufgabe zu erfüllen.“

„Aus Sicht des Programmierers ist es tausendmal besser, wenn ein Programm abbricht, wenn ein Fehler auftritt, als wenn das Programm auf einen Fehler stößt und dann (fehlerhaft) weiterarbeitet, ohne dass der Benutzer merkt, was passiert ist.“

„Das Programm könnte also schlimmer sein, wenn es einen Fehler anzeigt, als wenn das Programm geschlossen wird und alle Daten verloren gehen?“

„Warum haben Sie gedacht, dass das Programm einfach etwas falsch anzeigt? Vielleicht hat das Programm viele Fehler und alle Ihre Daten gehen unwiederbringlich verloren? Angenommen, Sie haben 3 Stunden lang Text eingegeben, aber nichts davon wird gespeichert, weil ein... Fehler, der bereits nach zwei Minuten auftrat.

„Wenn ein unerfahrener Programmierer auf Ausnahmen stößt, ist er frustriert.“

„Aber in Wirklichkeit offenbaren Ausnahmen alle möglichen Szenarien, die er hätte vorhersehen sollen, es aber nicht getan hat.“

„Sie könnten sich dafür entscheiden, keine Ausnahmen zu behandeln, und das würde Sie zu einem schlechten Programmierer machen. Aber wenn Ihre Methoden keine Ausnahmen auslösen, dann sind Sie überhaupt kein Programmierer – weil Sie diese einfache Wahrheit nicht verstanden haben:“

„Eine Methode macht entweder das, wofür sie geschrieben wurde, oder sie löst eine Ausnahme aus. Es gibt keine dritte Option!“

„Okay, ich glaube dir. Ich verspreche, Ausnahmen zu verwenden.“

„Großartig. Dann lass mich dir etwas über die Hierarchie der Ausnahmen erzählen:“

Ausnahmehierarchie, Fehler - 1

„Die Ausnahmehierarchie basiert auf vier Klassen.“

„Die niedrigste Basisklasse ist Throwable .“

„Die Klassen Error und Exception erben es.“

RuntimeException erbt Exception .“

„Die Error- Klasse ist die Basisklasse für JVM-Fehler wie StackOverFlow , OutOfMemory , …“

„Ein Programm kann solche Fehler normalerweise nicht beheben, was dazu führt, dass es beendet wird.“

„Was kann man tatsächlich tun, wenn nicht genügend Speicher vorhanden ist, damit das Programm normal weiterlaufen kann oder es zu einem Stapelüberlauf gekommen ist?“

Exception ist die Basisklasse für alle gewöhnlichen Ausnahmen, die von einem Programm ausgelöst werden.  RuntimeException ist eine besondere Art von Ausnahme , die etwas andere Regeln hat.“

"Was sind Sie?"

„Das ist genau das, was ich jetzt erklären werde.“

„Wie Sie sich wahrscheinlich erinnern, lassen sich Ausnahmen in zwei Kategorien einteilen: aktiviert und nicht aktiviert .“

„Wenn eine Methode geprüfte Ausnahmen auslöst, muss die Methode, die sie aufruft, den Aufruf in einen Try-Catch- Block einschließen . Nun, entweder das oder die Ausnahme (für ihren Aufrufer) erneut auslösen, indem in der Methodensignatur deutlich darauf hingewiesen wird.“

„Diese Regeln/Einschränkungen gelten nicht für ungeprüfte Ausnahmen.“

„Also gelten alle Ausnahmen, die Exception erben, als aktiviert. Mit Ausnahme von Ausnahmen, die RuntimeException erben, die als nicht aktiviert gelten.“

„Uh-huh. Ich erinnere mich, dass du mir vorhin so etwas erzählt hast.“

„Amigo! Sie fragen in jedem Interview nach der Ausnahmehierarchie . Ich sage es noch einmal – in jedem Interview . Sie müssen dieses Thema perfekt kennen.“

„OK. Ich werde alles noch einmal lesen und es herausfinden. Danke, dass du mir geholfen hast, Ellie.“