Rheinwerk Computing < openbook >


 
Inhaltsverzeichnis
Materialien zum Buch
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Arrays und ihre Anwendungen
5 Der Umgang mit Zeichen und Zeichenketten
6 Eigene Klassen schreiben
7 Objektorientierte Beziehungsfragen
8 Schnittstellen, Aufzählungen, versiegelte Klassen, Records
9 Ausnahmen müssen sein
10 Geschachtelte Typen
11 Besondere Typen der Java SE
12 Generics<T>
13 Lambda-Ausdrücke und funktionale Programmierung
14 Architektur, Design und angewandte Objektorientierung
15 Java Platform Module System
16 Die Klassenbibliothek
17 Einführung in die nebenläufige Programmierung
18 Einführung in Datenstrukturen und Algorithmen
19 Einführung in grafische Oberflächen
20 Einführung in Dateien und Datenströme
21 Einführung ins Datenbankmanagement mit JDBC
22 Bits und Bytes, Mathematisches und Geld
23 Testen mit JUnit
24 Die Werkzeuge des JDK
A Java SE-Module und Paketübersicht
Stichwortverzeichnis


Buch bestellen
Ihre Meinung?



Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom

Einführung, Ausbildung, Praxis
Buch: Java ist auch eine Insel


Java ist auch eine Insel

Pfeil 9 Ausnahmen müssen sein
Pfeil 9.1 Problembereiche einzäunen
Pfeil 9.1.1 Exceptions in Java mit try und catch
Pfeil 9.1.2 Geprüfte und ungeprüfte Ausnahmen
Pfeil 9.1.3 Eine NumberFormatException fliegt (ungeprüfte Ausnahme)
Pfeil 9.1.4 UUID in Textdatei anhängen (geprüfte Ausnahme)
Pfeil 9.1.5 Wiederholung abgebrochener Bereiche *
Pfeil 9.1.6 Bitte nicht schlucken – leere catch-Blöcke
Pfeil 9.1.7 Mehrere Ausnahmen auffangen
Pfeil 9.1.8 Zusammenfassen gleicher catch-Blöcke mit dem multi-catch
Pfeil 9.2 Ausnahmen weiterleiten, throws am Kopf von Methoden/Konstruktoren
Pfeil 9.2.1 throws bei Konstruktoren und Methoden
Pfeil 9.3 Die Klassenhierarchie der Ausnahmen
Pfeil 9.3.1 Eigenschaften des Exception-Objekts
Pfeil 9.3.2 Basistyp Throwable
Pfeil 9.3.3 Die Exception-Hierarchie
Pfeil 9.3.4 Oberausnahmen auffangen
Pfeil 9.3.5 Schon gefangen?
Pfeil 9.3.6 Ablauf einer Ausnahmesituation
Pfeil 9.3.7 Nicht zu allgemein fangen!
Pfeil 9.3.8 Bekannte RuntimeException-Klassen
Pfeil 9.3.9 Kann man abfangen, muss man aber nicht
Pfeil 9.4 Abschlussbehandlung mit finally
Pfeil 9.5 Auslösen eigener Exceptions
Pfeil 9.5.1 Mit throw Ausnahmen auslösen
Pfeil 9.5.2 Vorhandene Runtime-Ausnahmetypen kennen und nutzen
Pfeil 9.5.3 Parameter testen und gute Fehlermeldungen
Pfeil 9.5.4 Neue Exception-Klassen deklarieren
Pfeil 9.5.5 Eigene Ausnahmen als Unterklassen von Exception oder RuntimeException?
Pfeil 9.5.6 Ausnahmen abfangen und weiterleiten *
Pfeil 9.5.7 Aufruf-Stack von Ausnahmen verändern *
Pfeil 9.5.8 Präzises rethrow *
Pfeil 9.5.9 Geschachtelte Ausnahmen *
Pfeil 9.6 try mit Ressourcen (automatisches Ressourcen-Management)
Pfeil 9.6.1 try mit Ressourcen
Pfeil 9.6.2 Die Schnittstelle AutoCloseable
Pfeil 9.6.3 Ausnahmen vom close()
Pfeil 9.6.4 Typen, die AutoCloseable und Closeable sind
Pfeil 9.6.5 Mehrere Ressourcen nutzen
Pfeil 9.6.6 try mit Ressourcen auf null-Ressourcen
Pfeil 9.6.7 Unterdrückte Ausnahmen *
Pfeil 9.7 Besonderheiten bei der Ausnahmebehandlung *
Pfeil 9.7.1 Rückgabewerte bei ausgelösten Ausnahmen
Pfeil 9.7.2 Ausnahmen und Rückgaben verschwinden – das Duo return und finally
Pfeil 9.7.3 throws bei überschriebenen Methoden
Pfeil 9.7.4 Nicht erreichbare catch-Klauseln
Pfeil 9.8 Harte Fehler – Error *
Pfeil 9.9 Assertions *
Pfeil 9.9.1 Assertions in eigenen Programmen nutzen
Pfeil 9.9.2 Assertions aktivieren und Laufzeit-Errors
Pfeil 9.9.3 Assertions feiner aktivieren oder deaktivieren
Pfeil 9.10 Zum Weiterlesen
 

Zum Seitenanfang

9.2    Ausnahmen weiterleiten, throws am Kopf von Methoden/Konstruktoren Zur vorigen ÜberschriftZur nächsten Überschrift

Neben dem »Einzäunen« von problematischen Blöcken durch einen try-Block mit angehängtem catch-Block zur Behandlung gibt es eine weitere Möglichkeit, auf Exceptions zu reagieren: das Weiterleiten an den Aufrufer.

Nicht abgefangene ungeprüfte Ausnahmen gehen automatisch an den Aufrufer weiter, und wenn sie nicht aufgefangen werden, führen sie zum Ende des Threads – falls es nur den main-Thread gibt, beendet die JVM das Programm.

 

Zum Seitenanfang

9.2.1    throws bei Konstruktoren und Methoden Zur vorigen ÜberschriftZur nächsten Überschrift

Um Ausnahmen an den Aufrufer weiterzureichen, wird im Kopf der betreffenden Methode, oder des Konstruktors, eine throws-Klausel eingeführt. Das zeigt an, dass eine bestimmte Exception von der Methode oder vom Konstruktor nicht behandelt, sondern die Ausnahme an die aufrufende Stelle weitergeben wird. Tritt in der Methode oder dem Konstruktor eine Exception auf, so endet die Abarbeitung, die Ausnahme wird nicht lokal behandelt, sondern der Aufrufer muss sich um die Ausnahme kümmern.

Wir können unsere Methode writeUuid() so umschreiben, dass sie die Ausnahmen nicht mehr selbst abfängt, sondern nach oben weiterleitet:

Listing 9.7     src/main/java/com/tutego/insel/exception/LogCurrentDateTime2.java, Ausschnitt

public class UuidWriter2 {

public static void writeUuid() throws IOException {

String content = UUID.randomUUID() + "\n";

Files.writeString( Path.of( "uuids.txt" ),

content, StandardOpenOption.APPEND );

}



public static void main( String[] args ) {

try {

writeUuid();

}

catch ( IOException e ) { e.printStackTrace(); }

}

}

Nun ist main(…) am Zug und muss sich mit IOException herumärgern. Auch an main(…) könnte ein throws stehen; dann hätte die JVM den schwarzen Peter. Das Weiterleiten nach oben ist nicht unüblich, denn oftmals kann eine Methode oder ein Konstruktor die Ausnahme gar nicht behandeln und so weitermachen, als ob nichts gewesen wäre.

[+]  Tipp

Es ist unüblich, ungeprüfte Ausnahmen bei throws mit anzugeben. Allerdings sollten bewusste ungeprüfte Ausnahmen auf jeden Fall in der Javadoc auftauchen.

 


Ihre Meinung?

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Java ist auch eine Insel Java ist auch eine Insel

Jetzt Buch bestellen


 Buchempfehlungen
Zum Rheinwerk-Shop: Captain CiaoCiao erobert Java

Captain CiaoCiao erobert Java




Zum Rheinwerk-Shop: Algorithmen in Java

Algorithmen in Java




Zum Rheinwerk-Shop: Spring Boot 3 und Spring Framework 6

Spring Boot 3 und Spring Framework 6




Zum Rheinwerk-Shop: Java SE 9 Standard-Bibliothek

Java SE 9 Standard-Bibliothek




 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und in die Schweiz

InfoInfo



 

 


Copyright © Rheinwerk Verlag GmbH 2024

Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.

Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 

[Rheinwerk Computing]



Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de



Cookie-Einstellungen ändern