{"id":1087,"date":"2011-08-20T10:31:30","date_gmt":"2011-08-20T08:31:30","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/2011\/08\/antipattern-throw-new-exception\/"},"modified":"2011-08-20T10:31:30","modified_gmt":"2011-08-20T08:31:30","slug":"antipattern-throw-new-exception","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2011\/08\/antipattern-throw-new-exception\/","title":{"rendered":"Antipattern: throw new Exception()"},"content":{"rendered":"<p>Durch Zufall bin ich bei Heise \u00fcber <a href=\"http:\/\/www.heise.de\/developer\/artikel\/Von-C-nach-Java-Teil-2-Files-I-O-und-eine-Entwicklungsumgebung-1326652.html\">http:\/\/www.heise.de\/developer\/artikel\/Von-C-nach-Java-Teil-2-Files-I-O-und-eine-Entwicklungsumgebung-1326652.html<\/a> gesto\u00dfen. Eine Implementierung st\u00f6\u00dft mir auf:<\/p>\n<pre>public CFind(String s) <strong>throws Exception <\/strong>{<br \/>        super(s);<br \/>        if (!isDirectory()) <strong>throw new Exception(s+&quot; is NOT a directory!&quot;)<\/strong>;<br \/>        for (File f:listFiles()) {<br \/>            if (f.isDirectory()) {<br \/>                System.out.println(f.getAbsolutePath());<br \/>                new CFind(f.getAbsolutePath());<br \/>            }<br \/>        }<\/pre>\n<p>Es ist keine gute Idee eine direkte Instanz von Exception zu bauen aus auszul\u00f6sen. Wenn, sollten es immer Unterklasse von Exception sein. In diesem Fall ist das Argument falsch, sodass man ein IllegarArgumentException ausl\u00f6sen k\u00f6nnte. Als zweites gilt <strong>throws Exception <\/strong>in der Methodensignatur zu vermeiden \u2013 das zwingt Nutzer zur catch(Exception e)-Keule, ganz schlecht, weil dann auch alle RuntimeExceptions aufgefangen werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Durch Zufall bin ich bei Heise \u00fcber http:\/\/www.heise.de\/developer\/artikel\/Von-C-nach-Java-Teil-2-Files-I-O-und-eine-Entwicklungsumgebung-1326652.html gesto\u00dfen. Eine Implementierung st\u00f6\u00dft mir auf: public CFind(String s) throws Exception { super(s); if (!isDirectory()) throw new Exception(s+&quot; is NOT a directory!&quot;); 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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-1087","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=1087"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1087\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}