Я столкнулся с прецедентом, в котором я хотел бы объявить поле static final
с инструкцией инициализатора, объявленной бросить проверенное исключение. Как правило, это было бы выглядеть следующим образом:Как обрабатывать статический инициализатор конечного поля, который выдает проверенное исключение
public static final ObjectName OBJECT_NAME = new ObjectName("foo:type=bar");
Этот вопрос я здесь является то, что ObjectName
конструктор может бросить различные проверенные исключения, которые не заботятся о (потому что я знаю, что мое имя действительно, и все в порядке, если он ужасно сработает, если это не так). Java компилятор не позволит мне просто игнорировать это (как это проверяется исключение), и я предпочел бы не прибегать к:
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); } }
Поскольку статические блоки действительно, очень трудно читать. Есть ли у кого-нибудь предложение о том, как справиться с этим делом красивым, чистым способом?
Мое личное решение бросить 'CheckedExceptionsAreAPainInTheAssSometimesException', который является исключение. Затем программа просто сработает. – Airhead