Fehlerbehandlung, Exceptions, Module Flashcards
Wozu führt Modularität?
Beherrschung von Komplexität
Wieso führt Modularität zur Beherrschung von Komplexität?
- weniger Elemente zu betrachten: Entlastung Kurzeitgedächtnis
- Zusammengehöriges zusammenfassen: Konsistenz
- Abhängigkeiten und Details vor allem innerhalb Modul, Entkopplung zwischen Modulen: Veränderungen wirken sich möglichst klein aus und sind absehbar
Wann ist ein Zugriff auf ein Modul möglich?
Nur wenn expliziz freigegeben, Ändrungen der Klienten ändern das Modul nicht
Was ist das Geheimnisprinzip?
Module trennen in Schnittstelle und Implementation
Wieso können Klassen mehr als Module?
- definieren Typen mit Exemplaren
- sind polymorph verwendbar: Methoden überschreiben/überladen
- haben Vererbungsbeziehungen zueinander: Hierachien
Was kann ein Paket enthalten?
- Klassen
- Interfaces und
- Pakete
Was schafft man durch Pakete?
Entkopplung durch Kapselung
- Zugriff beschränken
- Namensraum und
- Übersetzungseinheit, sparen von Übersetzungszeit, weil nur das eine Paket übersetzen, nicht das ganze Projekt
Was ist der Namensraum?
- Häufige Namen, wie List oder File können häufiger verwendet werden, da sie durch die Namensnennung der Pakete eindeutig bestimmbar sind
- Paketname implizit Präfix von Klassen und Interfaces
Was ist ein vollqualifizierter Name?
Paketname.Typname
Was bedeutet Eindeutigkeit im Bezug auf Pakete?
Jede Klasse kann nur einem Paket zugehörig sein
Für was ist etwas ohne Modifier sichtbar?
Nur für innerhalb des Pakets
Wie wird ein Paket deklariert?
am Anfang einer Übersetzungseinheit: package paketname;
Wozu gehören Dateien ohne explizite Deklaration?
Zu einem Default-Package
Was bildet die Export-Schnittstelle eines Pakets?
alles als public deklarierte
Wozu wurden native Module eingeführt?
Um die Sichtbarkeit besser explizit zu steuern
Welche Vorteile haben native Module?
- Prüfung durch Compiler: Konfiguration gültig, Sichtbarkeit realisiert, Zyklenfreiheit
- Aussagekräftige Fehlermeldungen
- Java API besser skalierbar: ausblenden wenn nicht benötigt - Werkzeug jlink hilft
Von wie vielen Module darf ein Paket exportiert werden?
Nur von enem Modul
Welche Regeln gibt es für native Module?
- Jedes Paket darf nur von einem Modul exportiert werden
- Zyklische Abhängigkeiten zwischen Modulen sind verboten
Wie exportiert man ein package zu einem anderen Modul?
Für wen ist Kundennummer sichtbar?
Für Alle
Für wen ist Kundennummer sichtbar?
Für alle Klassen im selben Modul
Für wen ist Kundennummer sichtbar?
Für alle Klassen im selben Modul
Für wen ist Kundennummer sichtbar?
Für alle Klassen im selben Modul und im Modul se3
Was sind Entwicklungsfehler?
von Entwicklern gemacht
Was sind Umgebungsfehler?
treten in Umgebungen der Ausführung auf
Was sind die drei Oberklassen der Exception Hierarchie? Welche Verzweigung haben sie?
Was tut das Schlüsselwort throw?
Auslösen einer Exception
Was tut das Schlüsselwort try?
Block, in dem mit dem Auftreten einer Exception gerechnet wird
Was tut das Schlüsselwort catch?
Block zur Behandlung einer aufgetretene Exception
- Exception-Handler
Was tut finally?
Block zum geordneten Abschließen
- wird immer ausgeführt, wenn der try-Block betreten wurde
- auch wenn try-Block eine Exception zum vorzeitigen Beenden geführt hat und ein catch-Block ausgeführt wurde
- optional, aber empfohlen
Was tut das Schlüsselwort throws?
Deklarieren einer (geprüften) Exception an der
Operationsschnittstelle
Was geschiet, wenn kein passende catch-Block gefunden wird?
zur aufrufenden Methode zurückspringen und dort Fehlerbehandlung durchführen
- Ausnahme wird so weiterpropagiert und durchläuft die Methoden-Aufrufkette, bis sie abgefangen wird
- Kein Abfangen bis zur main-Methode: Fehlermeldung, Abbruch
Wann wird ein catch-Block ausgeführt?
passend zu Exception, wenn Typ der
erzeugten Exception gleich oder ein Subtyp ist
Was sind geprüfte Exceptions?
Methode deklariert Exception in ihrem Kopf (Schlüsselwort throws), dass sie diese Exception im Bedarfsfall auslösen wird
- Compiler prüft, ob Behandlung vorhanden: Versäumnisse vermeiden
- für vorhersehbare Fehler eingesetzt, also primär für Umgebungsfehler
Was sind ungeprüfte Exceptions?
Wird nicht deklariert
- primär für Entwicklungsfehler benutzt, da praktisch jederzeit auftretend, ihre Deklarationen würden den Quelltext überschwemmen.
Worauf bezieht sich geprüft und ungeprüft bei Exceptions?
bezieht sich auf die Übersetzungszeit
zur Laufzeit werden sie immer behandelt durch die VM