Sobes.tech
Назад к вопросам
Junior — Middle
127

В чем различие между методами finalize и finally в контексте обработки ресурсов и исключений?

Ответ от нейросети

sobes.tech AI

finalize и finally — это разные конструкции с разным назначением в Java:

  • finally — блок, который используется вместе с try-catch для гарантированного выполнения кода, например, освобождения ресурсов, независимо от того, было ли исключение или нет.
try {
    // код, который может выбросить исключение
} catch (Exception e) {
    // обработка исключения
} finally {
    // код, который выполнится всегда, например, закрытие файлов
}
  • finalize — метод класса Object, который вызывается сборщиком мусора перед уничтожением объекта. Его можно переопределить для освобождения ресурсов, но использование finalize не рекомендуется, так как вызов не гарантирован и может быть отложен.
@Override
protected void finalize() throws Throwable {
    try {
        // освобождение ресурсов
    } finally {
        super.finalize();
    }
}

Итого:

  • finally — для гарантированного выполнения кода при обработке исключений.
  • finalize — метод очистки перед сборкой мусора, но его использование устарело и не рекомендуется.