Donnerstag ist Exception Tag, im heutigen Teil der Java 7 Neuerungen geht es um ein erweitertes Exception Handling, eine kleine Verbesserung aus dem Project Coin. Es heißt übrigends deshalb Project Coin, da das Wort Coin für Kleingeld, Körberlgeld steht und somit nur als kleine Beigaben zu sehen sind. Interessanterweise finden gerade diese Neuerungen überall am meisten Gehör. Vielleicht weil sie sich schnell und knackig präsentieren lassen, wie hier in meinem Blog. Oder weil sie wohl für die breite Masse der Entwickler von Anfänger bis alten Hasen relevant sein werden.
Multi-Catch Exception
Musste bisher jede Exception einzeln abgefangen werden:
try{ functionWithException(); } catch (FileNotFoundException fnfe) { fnfe.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); }
konnte s zu redundanten Fehlerbehandlungen kommen, wo eine Verallgemeinerung der Exception nicht zielführend war. In Java 7 lassen sich nun mehrere ExceptionTypen in einer catch-Klausel fangen
try{ functionWithException(); } catch (FileNotFoundException | IOException e) { e.printStackTrace(); }
Präzisere Exceptions
Fängt man eine Exception oder ein Throwable (also eine Generische Exception) in einem catch Block mit einem vorgestellten final ab, kann man eine weitere Exception werfen lassen, diese wird dabei jedoch zur Compilezeit präzisiert. D.h. es wird ermittelt welche exakte Exception/Thorwable auftreten kann. Es reicht damit aus diese an der Methodendeklaration zu nennen.
public void getTheThrow() throws ThrowableA, ThrowableB{ try { throwAorB(); } catch (final Throwable t) { throw t; // throws a named exception, not Throwable } }
Dadurch bleibt die Behandlung im Code allgemein, und für denjenigen der die Methode einmal verwendet wurde jedoch die API eingeschränkt. Vor Java 7 hätte man hierbei einen Compile-Error erhalten.
Happy Coding
Schreibe einen Kommentar