Я пытаюсь инициализировать статическую конечную переменную. Однако эта переменная инициализируется в методе, который может генерировать исключение, поэтому мне нужно иметь внутри блок try catch.
Даже если я знаю, что эта переменная будет инициализирована либо в блоке try, либо в блоке catch, компилятор java выдает ошибку
Последнее поле a может быть уже назначено
Это мой код:
public class TestClass {
private static final String a;
static {
try {
a = fn(); // ERROR
} catch (Exception e) {
a = null;
}
}
private static String fn() throws Exception {
throw new Exception("Forced exception to illustrate");
}
}
Я попробовал другой подход, объявив его как null напрямую, но он показывает аналогичную ошибку (в этом случае мне это кажется совершенно логичным)
Последнее поле TestClass.a не может быть назначено
public class TestClass {
private static final String a = null;
static {
try {
a = fn(); // ERROR
} catch (Exception e) {
}
}
private static String fn() throws Exception {
throw new Exception("Forced exception to illustrate");
}
}
Есть ли элегантное решение для этого?
b
в свойtry...catch
, проверьте результат и после него присвойтеa
значение - person Kaddath   schedule 23.04.2018