Я сталкиваюсь с вариантом использования, когда я хотел бы объявить поле 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
, что является исключением во время выполнения. После этого программа просто вылетает. - person Bassinator   schedule 18.10.2017