Рассмотрим код из документации Java ниже:
public void writeList() {
PrintWriter out = null;
try {
System.out.println("Entering" + " try statement");
out = new PrintWriter(new FileWriter("OutFile.txt"));
for (int i = 0; i < SIZE; i++) {
out.println("Value at: " + i + " = " + list.get(i));
}
} catch (IndexOutOfBoundsException e) {
System.err.println("Caught IndexOutOfBoundsException: "
+ e.getMessage());
} catch (IOException e) {
System.err.println("Caught IOException: " + e.getMessage());
} finally {
if (out != null) {
System.out.println("Closing PrintWriter");
out.close();
}
else {
System.out.println("PrintWriter not open");
}
}
}
"finally block executes whether an exception happens or not or an exception is not handled"
это определение, которое я вижу повсюду.
Мой вопрос: что, если я заменю два блока catch на один catchпоговорка
try {
System.out.println("Entering" + " try statement");
out = new PrintWriter(new FileWriter("OutFile.txt"));
for (int i = 0; i < SIZE; i++) {
out.println("Value at: " + i + " = " + list.get(i));
}
} catch (Exception e) {
e.printStacktrace()
}
Выше кода обрабатывает все исключения.Итак, зачем нам нужен наконец блок?Вместо того, чтобы что-то делать в блоке finally, я могу написать, что за пределами блока try-catch оба значения одинаковы.
Зачем нам нужен блок finally здесь?