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