Illustration einer tropischen Insel mit Palmen und einem hohen Berg

Java Blog für Programmierer

Antipattern: throw new Exception()

· Christian Ullenboom

Durch Zufall bin ich bei Heise über 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.

Kategorien: Allgemein

← Alle Beiträge