У меня есть код вроде:
final int var1;
if ( isSomethingTrue ) {
var1 = 123;
} else {
throwErrorMethod();
}
int var2 = var1;
И throwErrorMethod определяется примерно так:
private void throwErrorMethod() throws Exception{
throw new Exception();
}
И я получаю компиляцию blank final field may not have been initialized
для оператора var2 = var1
. Если я встраиваю метод, компиляция в порядке!
- Разве компилятор не видит
throws Exception
в методе, который называется? - Почему ошибка, которая содержит слово
may
в ней, останавливает компиляцию?!?