¿Cómo puedo leer en JDBC un valor doble posiblemente nulo de resultSet?

Tengo una columna en mi base de datos que está escritadouble y quiero leer su valor utilizando un conjunto de resultados JDBC, pero puede ser nulo. Cual es la mejor manera de hacer esto? Puedo pensar en tres opciones, ninguna de las cuales parece muy buena.

Opción 1: mala porque la excepción se maneja verbosa y huele mal

double d;
try {
   d = rs.getDouble(1);
   // do something
} catch(SQLException ex) {
   if(rs.wasNull()) {
      // do something else
   } else {
     throw ex;
   }
}

Opción 2: mala porque dos capturas

s = rs.getString(1); // or getObject()
if(s == null) {
  // do something else
} else {
  double d = rs.getDouble(1);
  // do something
}

Opción 3: mala porque la conversión de Java en lugar de SQL

s = rs.getString(1); // or getObject()
if(s == null) {
  // do something else
} else {
  double d = Double.parseDouble(s);
  // do something
}

¿Alguna sugerencia sobre de qué manera es mejor, o hay otra manera superior? Y, por favor, no diga "Use Hibernate", solo estoy restringido al código JDBC aquí.

Respuestas a la pregunta(4)

Su respuesta a la pregunta