Поскольку я считаю, что это хорошая практика программирования, я делаю все мои (локальные или экземпляры) переменные final, если они предназначены для записи только один раз.
Однако я замечаю, что когда присваивание переменной может вызывать исключение, вы не можете сделать указанную переменную final:
final int x;
try {
    x = Integer.parseInt("someinput");
}
catch(NumberFormatException e) {
    x = 42;  // Compiler error: The final local variable x may already have been assigned
}
Есть ли способ сделать это, не прибегая к временной переменной? (или это не подходящее место для окончательного модификатора?)