У меня есть код вроде:
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
, останавливает компиляцию?!?