Exceptions Flashcards
Welche 3 Arten von Exceptions unterscheidet man?
- Ausnahmen, die auf eine unvorsichtige Implementierungsarbeit hindeuten und die durch angemessene Überprüfungen vermieden werden können (NullPointerException)
- Ausnahmen, die nich vorhergesehen und nicht ausgeschlossen werden können, die aber zur Laufzeit mit hoher Wahrscheinlichkeit auftreten können und gegen die Anwendung robust sein sollte (IOException)
- Ausnahmen, die nicht vorhergesehen werden können, auf die das Programm selbst keinen Einfluss hat (OutOfMemoryError)
Methoden können in ihrer Signatur throws-Deklarationen enthalten. Was verlangt Ihnen der Compiler ab, wenn Sie eine solche Methode aufrufen? Gilt dies für jede Ausnahme?
Enthält eine Methodensignatur eine throws-Deklaration, so muss jeder Aufrufer die dort genannten Ausnahmen behandeln können. Dies kann entweder erfolgen, indem die aufrufende Methode selbst den entsprechenden Ausnahme-Typ in ihrer throws-Deklaration enthält oder indem der Aufruf in einem try-catch-Block erfolgt, der die Ausnahme abfangen kann.
Ausgenommen hiervon sind Ausnahmen, die von Error oder RuntimeException abgeleitet sind. Diese müssen nicht explizit behandelt werden.
Nennen Sie 4 Ihnen bekannte Ausnahmetypen aus der Java-Standardbibliothek, die aus mindestens zwei verschiedenen der oben genannten Gruppen stammen. Erläutern Sie jeweils Ihre Zuordnung.
NullPointerException (1) Durch defensives Programmieren kann diese Ausnahme vermieden werden.
NumberFormatException (1) An den Stellen, an denen eine Zeichenkette in eine Zahl gewandelt werden soll, kann durch eine syntaktische Prüfung zuvor sichergestellt werden, dass die Konvertierung tatsächlich durchgeführt werden kann.
FileNotFoundException (2) Da auch andere Programme Zugriff auf das Dateisystem haben, kann nicht ausgeschlossen werden, dass Dateien verändert oder gar gelöscht werden. Wann immer Dateien geladen werden soll (deren Pfad z.B. aus einer Konfigurationsdatei gelesen wird), muss damit gerechnet werden, dass die Datei nicht mehr gefunden werden kann.
IOException (2) (z.B. bei Netzwerkkommunikation) Findet ein Nachrichtenaustausch zwischen verschiedenen Rechnern statt, muss damit gerechnet werden, dass die Verbindung aufgrund eines Netzwerkproblems gestört wird.
OutOfMemoryError (3) Während der Programmausführung wird weiterer Speicher benötigt, der aber nicht zur Verfügung gestellt werden kann. Der zur Verfügung stehende Speicher wird durch den Benutzer beim Start der Anwendung beschränkt und kann durch das Programm selber nicht geändert werden