Me enfrento a un caso de uso en el que me gustaría declarar un campo static final
con una declaración de inicializador que se declara arrojar una excepción marcada. Por lo general, se vería así:Cómo manejar un inicializador de campo final estático que arroja una excepción comprobada
public static final ObjectName OBJECT_NAME = new ObjectName("foo:type=bar");
El problema que tengo es que el ObjectName
constructor puede lanzar varias excepciones comprobadas, que no importan (porque me conoces mi nombre es válida, y está bien si falla miserablemente en caso de que no lo sea). El compilador de Java no me deja simplemente ignorar este (ya que es una excepción comprobada), y yo preferiría no recurrir a:
public static final ObjectName OBJECT_NAME; static{ try{ OBJECT_NAME = new ObjectName("foo:type=bar"); }catch(final Exception ex){ throw new RuntimeException("Failed to create ObjectName instance in static block.",ex); } }
Debido bloques estáticos son muy, muy difícil de leer. ¿Alguien tiene una sugerencia sobre cómo manejar este caso de una manera agradable y limpia?
Mi solución personal es lanzar un 'CheckedExceptionsAreAPainInTheAssSometimesException', que es una excepción en tiempo de ejecución. El programa simplemente se bloqueará. – Airhead