2013-10-28 3 views
0

Если я занимаюсь исключениями отдельно, то почему мне нужно сделать значение окончательным? , например. 1. Считается ли это хорошей практикой? Если да, то почему? Если не так?Обработка исключений в Java - окончательный

catch(final InputOutputException exception) 
{// do stuff 
} 
+1

Вам не нужно делать что-либо окончательное как таковое, но final - это проверка времени компиляции, чтобы вы не переназначали переменную в этом блоке. Некоторым/многим людям нравится объявлять все, что не следует переназначать как окончательное. – Matthias

ответ

0

делает его final становится ясно, что вы не изменили поле.

IMHO Если ваш код обработки не так короток и прост, что читатель не может этого легко понять, вы сделали что-то не так.

Я думаю, вы должны сделать поля final, поскольку классы могут быть длинными, но методы должны быть достаточно простыми, вы можете решить, являются ли они окончательными или нет.

1

В Java все может быть объявлено final - в этом случае декларация сродни объявлению параметра метода final.

Эффект этого является то, что вы не сможете переназначить значение

catch(final InputOutputException ex) { 
    ex = new InputOutputException(); 
    //^compile time error. 
} 

На практике я только действительно когда-либо видел это используется, если Exception потребности, которые будут использоваться в качестве анонимного класса, только final локальные переменные могут ссылаться следующим образом:

} catch (final Exception e) { 
    SwingUtilities.invokeLater(new Runnable() { 

     @Override 
     public void run() { 
      myLabel.setText(e.getMessage()); 
     } 
    }); 
} 

Роберт Симмонс младший в своей книге Hardcore Java рекомендует сделать всёfinal. Обоснованием для этого является то, что он превращает ошибки опечатка и кода в ошибки времени компиляции.

+0

Назначение «RuntimeException» переменной типа «InputOutputException» также приведет к ошибке времени компиляции, если переменная не была окончательной. –

+0

@MarkRotteveel fair point - изменили пример. Это было просто иллюстративно. –

Смежные вопросы