Rheinwerk Computing < openbook >


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


Download:

- Listings, ca. 2,7 MB


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 8 Ausnahmen müssen sein
Pfeil 8.1 Problembereiche einzäunen
Pfeil 8.1.1 Exceptions in Java mit try und catch
Pfeil 8.1.2 Geprüfte und ungeprüfte Ausnahmen
Pfeil 8.2 Geprüfte Ausnahmen
Pfeil 8.2.1 Letzte ausgeführte Java-Programme loggen
Pfeil 8.2.2 try-catch-Behandlung
Pfeil 8.2.3 throws im Methodenkopf angeben
Pfeil 8.3 Ungeprüfte Ausnahmen (RuntimeException)
Pfeil 8.3.1 Eine NumberFormatException fliegt
Pfeil 8.3.2 Bekannte RuntimeException-Klassen
Pfeil 8.3.3 Kann man abfangen, muss man aber nicht
Pfeil 8.4 Gut gefangen
Pfeil 8.4.1 Bitte nicht schlucken – leere catch-Blöcke
Pfeil 8.4.2 Wiederholung abgebrochener Bereiche *
Pfeil 8.4.3 Mehrere Ausnahmen auffangen
Pfeil 8.4.4 Ablauf einer Ausnahmesituation
Pfeil 8.4.5 Abschlussbehandlung mit finally
Pfeil 8.5 Die Klassenhierarchie der Ausnahmen
Pfeil 8.5.1 Eigenschaften des Exception-Objekts
Pfeil 8.5.2 Basistyp Throwable
Pfeil 8.5.3 Die Exception-Hierarchie
Pfeil 8.5.4 Oberausnahmen auffangen
Pfeil 8.5.5 Schon gefangen?
Pfeil 8.5.6 Alles geht als Exception durch
Pfeil 8.5.7 Zusammenfassen gleicher catch-Blöcke mit dem multi-catch
Pfeil 8.6 Auslösen eigener Exceptions
Pfeil 8.6.1 Mit throw Ausnahmen auslösen
Pfeil 8.6.2 Vorhandene Runtime-Ausnahmetypen kennen und nutzen
Pfeil 8.6.3 Parameter testen und gute Fehlermeldungen
Pfeil 8.6.4 Neue Exception-Klassen deklarieren
Pfeil 8.6.5 Eigene Ausnahmen als Unterklassen von Exception oder RuntimeException?
Pfeil 8.6.6 Ausnahmen abfangen und weiterleiten *
Pfeil 8.6.7 Aufruf-Stack von Ausnahmen verändern *
Pfeil 8.6.8 Präzises rethrow *
Pfeil 8.6.9 Geschachtelte Ausnahmen *
Pfeil 8.7 Automatisches Ressourcen-Management (try mit Ressourcen)
Pfeil 8.7.1 try mit Ressourcen
Pfeil 8.7.2 Die Schnittstelle AutoCloseable
Pfeil 8.7.3 Mehrere Ressourcen nutzen
Pfeil 8.7.4 try mit Ressourcen auf null-Ressourcen
Pfeil 8.7.5 Ausnahmen vom close()
Pfeil 8.7.6 Unterdrückte Ausnahmen *
Pfeil 8.8 Besonderheiten bei der Ausnahmebehandlung *
Pfeil 8.8.1 Rückgabewerte bei ausgelösten Ausnahmen
Pfeil 8.8.2 Ausnahmen und Rückgaben verschwinden – das Duo return und finally
Pfeil 8.8.3 throws bei überschriebenen Methoden
Pfeil 8.8.4 Nicht erreichbare catch-Klauseln
Pfeil 8.9 Harte Fehler – Error *
Pfeil 8.10 Assertions *
Pfeil 8.10.1 Assertions in eigenen Programmen nutzen
Pfeil 8.10.2 Assertions aktivieren und Laufzeit-Errors
Pfeil 8.10.3 Assertions feiner aktivieren oder deaktivieren
Pfeil 8.11 Zum Weiterlesen
 

Zum Seitenanfang

8    Ausnahmen müssen sein Zur vorigen ÜberschriftZur nächsten Überschrift

»›Wir sind in Sicherheit! Er kann uns nicht erreichen!‹

›Sicher?‹

›Ganz sicher! Bären haben Angst vor Treibsand!‹«

– Hägar, Dik Browne (1917–1989)

Fehler beim Programmieren sind unvermeidlich. Schwierigkeiten bereiten nur die unkalkulierbaren Situationen – hier ist der Umgang mit Fehlern ganz besonders heikel. Java bietet die elegante Methode der Exceptions, um mit Fehlern flexibel umzugehen.

 

Zum Seitenanfang

8.1    Problembereiche einzäunen Zur vorigen ÜberschriftZur nächsten Überschrift

In den frühen Programmiersprachen gab es für Routinen keine andere Möglichkeit, als über den Rückgabewert einen Fehlschlag anzuzeigen – in der Programmiersprache C ist das auch heute noch der Fall. Der Fehlercode ist häufig -1, aber auch NULL oder 0. Allerdings kann die Null auch Korrektheit anzeigen. Irgendwie ist das willkürlich. Die Abfrage dieser Werte ist unschön und wird von uns gern unterlassen, zumal wir oft davon ausgehen, dass ein Fehler in dieser Situation gar nicht auftreten kann – diese Annahme kann aber eine Dummheit sein. Zudem wird der Programmfluss durch Abfragen der Rückgabeergebnisse unangenehm unterbrochen, zumal der Rückgabewert, wenn er nicht gerade einen Fehler anzeigt, weiterverwendet wird. Der Rückgabewert ist also im weitesten Sinne überladen, da er zwei Zustände anzeigt. Häufig entstehen mit den Fehlerabfragen kaskadierte if-Abfragen, die den Quellcode schwer lesbar machen.

[zB]  Beispiel

Die Java-Bibliothek geht bei den Methoden delete(), mkdir(), mkdirs() und renameTo(…) der Klasse File nicht mit gutem Beispiel voran. Anstatt über eine Ausnahme anzuzeigen, dass die Operation nicht geglückt ist, liefern die genannten Methoden false. Das ist unglücklich, denn viele Entwickler verzichten auf den Test, und so entstehen Fehler, die später schwer zu finden sind.

 

Zum Seitenanfang

8.1.1    Exceptions in Java mit try und catch Zur vorigen ÜberschriftZur nächsten Überschrift

Bei der Verwendung von Exceptions wird der Programmcode nicht durch Abfrage des Rückgabestatus unterbrochen. Ein besonders ausgezeichnetes Programmstück überwacht die ordentliche Ausführung und ruft im Fehlerfall speziellen Programmcode zur Behandlung auf.

Den überwachten Programmbereich (Block) leitet das Schlüsselwort try ein. Dem try-Block folgt in der Regel[ 179 ](In manchen Fällen auch ein finally-Block, sodass es dann ein try-finally wird. ) ein catch-Block, in dem Programmcode steht, der die Ausnahme behandelt. Kurz skizziert, sieht das so aus:

try {

// Programmcode, der eine Ausnahme ausführen kann

}

catch ( ... ) {

// Programmcode zum Behandeln der Ausnahme

}

// Es geht ganz normal weiter, denn die Ausnahme wurde behandelt

Fehler führen zu Ausnahmen, und diese Ausnahmen behandelt ein catch-Block. Hinter catch folgt also der Programmblock, der beim Auftreten einer Ausnahme ausgeführt wird, um den Fehler abzufangen (daher der Ausdruck catch). Der Fehler kann auf der Kommandozeile gemeldet oder etwa in einen Logger geschrieben werden. Ob es zur Laufzeit wirklich zu einem Fehler kommt, ist nicht bekannt, aber wenn, dann ist eine Behandlung vorhanden.

Es ist nach der Fehlerbehandlung nicht mehr so einfach möglich, an der Stelle fortzufahren, an der der Fehler auftrat. Auch lässt sich im Nachhinein nicht wirklich feststellen, an welcher Stelle genau der Fehler aufgetreten ist, wenn es in einem großen try-Block mehrere ausnahmenauslösende Stellen gibt. Andere Programmiersprachen erlauben das durchaus.

 

Zum Seitenanfang

8.1.2    Geprüfte und ungeprüfte Ausnahmen Zur vorigen ÜberschriftZur nächsten Überschrift

Java unterscheidet zwischen zwei Gruppen von Ausnahmen: geprüften und ungeprüften Ausnahmen. Die geprüften Ausnahmen müssen zwingend behandelt werden, indem sie entweder aufgefangen oder weitergeleitet werden. Sie finden sich der Regel bei Ein-/Ausgabe-Operationen. Ungeprüfte Ausnahmen müssen nicht unbedingt aufgefangen werden. Treten die Ausnahmen jedoch auf und werden sie nicht aufgefangen, so führt das zum Ende des ausführendes Threads. In den folgenden zwei Abschnitten betrachten wir diese Ausnahmen im Detail.

 


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: Java SE 9 Standard-Bibliothek

Java SE 9 Standard-Bibliothek




Zum Rheinwerk-Shop: Algorithmen in Java

Algorithmen in Java




Zum Rheinwerk-Shop: Objektorientierte Programmierung

Objektorientierte Programmierung




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

InfoInfo



 

 


Copyright © Rheinwerk Verlag GmbH 2021

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