final class Utils
{
public final static RuntimeException woBoilerplate(Exception e)
{
return (e instanceof RuntimeException) ? (RuntimeException)e : new
RuntimeException(e);
}
}
...
import static Utils.unchecked;
try
{
doStuff();
}
catch(Exception e)
{
throw woBoilerplate(e);
}
finally
{
cleanup();
}
On Sat, Aug 15, 2009 at 11:11 AM, Andreas Petersson <[email protected]>wrote:
>
> 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.
>
> >
>
--
Viktor Klang
Rogue Scala-head
Blog: klangism.blogspot.com
Twttr: viktorklang
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The
Java Posse" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---