Java «пустое последнее поле, возможно, не было инициализировано» Исключение странность метода

У меня есть код вроде:

final int var1;    

if ( isSomethingTrue ) {

   var1 = 123;

} else {
   throwErrorMethod();
}

int var2 = var1;

А throwErrorMethod определяется примерно так:

private void throwErrorMethod() throws Exception{

   throw new Exception();

}

И я получаю пустое последнее поле, возможно, не было инициализировано ошибка компиляции для оператора var2 = var1 . Если я встраиваю метод, компиляция в порядке!

  1. Разве компилятор не видит, что выдает исключение в вызываемом методе?
  2. Почему ошибка со словом может ] останавливает компиляцию?!?
14
задан Yohanes Khosiawan 许先汉 17 November 2014 в 07:03
поделиться