С JDK 6 и ниже я видел множество фрагментов кода с блоками try - finally, как показано ниже.Java try - окончательный дизайн
private void doSomething() throws IOException {
FileReader reader = null;
try {
reader = new FileReader("someFile");
.....
} finally {
if(reader != null){
reader.close();
}
}
}
Зачем инициализировать считыватель нулем, а затем назначить его в блоке try. Будет ли ниже шаблон лучше (интересно, если я что-то пропустил)? Мои причины ... мы избегаем нулевой проверки в блоке finally, и если читатель не смог инициализироваться, мне больше нечего делать.
private void doSomething() throws IOException {
FileReader reader = new FileReader("someFile");
try {
.....
} finally {
reader.close();
}
}
Не очень! Если конструктор выбрасывает исключение, остальная часть метода ничего не сделает. См. Предложение бросков? – Stackee007