Ответ
Да, можно. Конструкция try-finally без catch допустима, когда не требуется обработка исключений, но необходимо гарантированно выполнить код освобождения ресурсов (закрытие файлов, соединений и т.д.). Исключение, возникшее в блоке try, не перехватывается и пробрасывается выше по стеку вызовов.
Пример:
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
try {
String line = reader.readLine();
// работа с данными
} finally {
reader.close(); // ресурс будет закрыт даже при исключении
}
Почему это работает? Блок finally выполняется всегда, независимо от того, было выброшено исключение в try или нет.
Важно:
- Для работы с ресурсами в современном Java предпочтительнее использовать try-with-resources.
- Использование
try-finallyбезcatchоправдано, когда вы сознательно хотите, чтобы исключение распространялось дальше, а ваша задача — только обеспечить cleanup.