{"id":204,"date":"2006-02-10T15:14:35","date_gmt":"2006-02-10T13:14:35","guid":{"rendered":"http:\/\/www.puls200.de\/?p=204"},"modified":"2006-02-10T15:15:53","modified_gmt":"2006-02-10T13:15:53","slug":"am-programmcode-wuhltisch","status":"publish","type":"post","link":"https:\/\/www.puls200.de\/?p=204","title":{"rendered":"Am (Programmcode-) W\u00fchltisch"},"content":{"rendered":"<p>Exceptions treiben mich noch irgendwann mal zum Wahnsinn. Damit ich herausfinde wo es kracht, mu\u00df ich im Debugger \"Break on Exception\" aktivieren. Dann bleibt er stehen wenn eine auftritt, auch wenn sie behandelt wird. Jetzt ist aber der Code gerammelt voll mit Aktivit\u00e4ten wie:<br \/>\n<code><br \/>\ntry {<br \/>\n  \/\/ lade irgend ein bitmap<br \/>\n  ..<br \/>\n}<br \/>\ncatch( .. ) { .. }<br \/>\n<\/code><br \/>\nAuf den Entwicklungsmaschinen und beim Kunden gibt es oft diese Bitmaps nicht. Macht aber auch nichts, ist ja nur <em>eye candy<\/em>. Jetzt kann ich entweder o.g. Einstellung wieder deaktivieren oder endlos \"continue\" klicken, bis der Ausf\u00fchrung irgendwann einmal an einer interessanten Stelle angekommen ist.<br \/>\nOk, das kann man jetzt als eine l\u00e4stige Nerverei abtun. Aber hier steckt noch ein viel fundamentaleres Problem dahinter. Das Abfangen der Exception bewirkt n\u00e4mlich, da\u00df der m\u00f6glicherweise komplett verbuggte Code *hinter* der die Exception ausl\u00f6senden Stelle nie ausgef\u00fchrt wird. Passiert das eines Tages doch (z.B. beim Kunden), wundert man sich \u00fcber heitere Nebeneffekte. Dahinter steckt die Denkweise, Exceptions wie <em>goto<\/em>s zu verwenden. Ich finde das grauenhaft.<br \/>\nWarum nicht so<br \/>\n<code><br \/>\nif(File.Exists(filename)) {<br \/>\n  \/\/ lade bitmap ....<br \/>\n}<br \/>\n<\/code><br \/>\nDaher sollte man o.g. Code einfach schnell vergessen. Die Regel mu\u00df einfach lauten \"wirf nur dann, wenn es wirklich was zu werfen gibt!\" (und dann sollte es auch OK sein, wenn das Programm mit einem sch\u00f6nen Exceptiondialog abrauscht).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich hab wieder Spa\u00df bei der Arbeit <a href=\"https:\/\/www.puls200.de\/?p=204\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0},"categories":[4],"tags":[],"_links":{"self":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/posts\/204"}],"collection":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=204"}],"version-history":[{"count":0,"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/posts\/204\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}