deal with exceptions in finally actions

add pendingException thing to track exceptions in finallys. Really tough to find problems if there is an error during an action but it then executes the @finally clause which causes an exception. First exception is LOST!

Donated by scott stanchfield:

Throwable pendingThrowable = null;
Connection connection = null;
try {
  try {
    connection = ... // open connection
    // do database stuff
  } catch(Throwable t) {
    pendingThrowable = t;
  }

} finally {
  try {
    if (connection != null) {
      connection.close();
    }
  } catch(Throwable t) {
    if (pendingThrowable != null) {
      throw pendingThrowable;
    }
    throw t;
  }
}