Antipattern: throw new Exception()

Durch Zufall bin ich bei Heise über http://www.heise.de/developer/artikel/Von-C-nach-Java-Teil-2-Files-I-O-und-eine-Entwicklungsumgebung-1326652.html gestoßen. Eine Implementierung stößt mir auf:

public CFind(String s) throws Exception {
super(s);
if (!isDirectory()) throw new Exception(s+" is NOT a directory!");
for (File f:listFiles()) {
if (f.isDirectory()) {
System.out.println(f.getAbsolutePath());
new CFind(f.getAbsolutePath());
}
}

Es ist keine gute Idee eine direkte Instanz von Exception zu bauen aus auszulösen. Wenn, sollten es immer Unterklasse von Exception sein. In diesem Fall ist das Argument falsch, sodass man ein IllegarArgumentException auslösen könnte. Als zweites gilt throws Exception in der Methodensignatur zu vermeiden – das zwingt Nutzer zur catch(Exception e)-Keule, ganz schlecht, weil dann auch alle RuntimeExceptions aufgefangen werden.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert