08.07.2011

Java 7 - Vereinfachtes Exceptionhandling

Eine weitere Neuerung in Java 7 ist das vereinfachte Exceptionhandling. In Java 6 musste jede Exception in einem eigenen Block abgefangen und behandelt werden. Dies wurde dann bei Methoden mit zahlreichen Exceptions schnell unübersichtlich und aufwändig.

Um das ganze etwas verständlicher zu machen, habe ich ein kleines Beispiel gebaut. Das Beispiel zeigt eine Bar in der man Getränkte bestellen kann. Sollte ein Getränk nicht mehr vorhanden sein, wird eine Exception geworfen. Ebenfalls wird eine Exception geworfen, wenn ein Barkeeper gerade nicht anwesend sein sollte. Das Ende der Simulation ist erreicht, wenn die Bar geschlossen ist, was wiederum durch eine Exception vermittelt wird. Der vollständige Quellcode kann im Repository zum Blog eingesehen werden.
Klassen der Simulation

Mit dem Erstellen der Bar wird ein zufälliger Vorrat an Drinks erstellt, die im Laufe der Simulation zur Verfügung stehen.
Initialisierung der Bar

Die Bar nimmt die Bestellungen an und prüft intern die Verfügbarkeit der entsprechenden Drinks. Sollten Fehler auftreten, werden diese an den Nutzer weitergegeben.
Aufnahme einer Bestellung

Diese Ausgangssituation ist sowohl für das Java 6 als auch für das Java 7 Beispiel identisch. Die eigentliche Unterscheidung findet sich in der Simulationklasse der Bar.

Mit Java 6 ist es notwendig, dass alle Exceptions einzeln abgefangen werden.
Simulation mit Java 6
Damit ergeben sich mitunter redundante Blöcke, die vermieden werden könnten, siehe Behandlung der DrinkNotAvailableException und der MissingBarkeeperException.

Mit Java 7 können verschiedene Exceptions zu einem Block zusammengefasst und dann gemeinsam behandelt werden.
Simulation mit Java 7

Sicherlich ein Feature, welches gerade für die Sammlung verschiedener Systemfehler und deren Behandlung im UI sehr nützlich ist.

Keine Kommentare:

Kommentar veröffentlichen