We did a quite large code refactoring regarding Exceptions in my company some weeks ago. The codebase is about 2k classes. Before we did the refactoring, we had a pretty harmful way of dealing exceptions, like this:
//do not try this at home... try{ Connection c = getConn(); query_data(); do_resource_cleanup(); return result; }catch (SqlException e){ logger.info("hmm i guess this just failed"); return ""; } code like this was cluttered all over the source. what happened was that people using the system thought their updates were successful, when in fact they were not. also, we leaked tons of connections and preparedstatements. we changed everything to a catch-rethrow as RuntimeException pattern. a central Servlet filter catches all exceptions,loggs errors to file and mail, and redirects to a "submit error description" page. so the code mostly looks like this now: Connection c = null; try{ c = getConn(); return query_data(); }catch (SqlException e){ throw new MyRuntimeException("unexpected error calling XXX using parameters : PPPP " ,e); }finally{ do_resource_cleanup(); //check for nulls } this is how it looks like the old jdbc-based data access classes, which are the majority. the hibernate-based data access classes swallowed runtimeexceptions, their erronous error handling code was entirely removed, cutting their code footprint to 1/3, most of the methods are one-liners now. this refactoring affected about 500 classes. most of the work was done using the excellent Structural Search and Replace tool inside IntelliJ Idea. prototyping the changes took about 2 days the actual replace was done in a couple of minutes after we knew what to change. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to javaposse@googlegroups.com To unsubscribe from this group, send email to javaposse+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/javaposse?hl=en -~----------~----~----~----~------~----~------~--~---