2010-06-14 2 views
5

Что произойдет, если при выполнении finalize() будет создано исключение? Является ли штабель неудобным, как обычно? Продолжает ли он завершать() и игнорировать исключение? Завершает ли она finalize() и продолжит GC объект? Или что-то другое?Что произойдет, если исключение выбрано во время finalize()

Я не ищу рекомендации по использованию finalize(), там есть много страниц, объясняющих это.

ответ

9

От Object#finalize() Javadoc:

Любое исключение выбрасывается по финализации метод вызывает завершение этого объекта быть остановлен, но в остальном игнорируется.

+4

Полностью не связанный с вопросом, но ... Я ЛЮБЛЮ ВАШ АВТАР. Grim Fandango был самой большой игрой EVAR! –

+2

Мануэль определенно был доработан. – cmccabe

4

Правильный способ кодирования финализации, если у вас есть уважительная причина, чтобы написать один на всех, это:

protected void finalize() throws Throwable 
{ 
    try 
    { 
    // my finalization code 
    } 
    finally 
    { 
    super.finalize(); 
    } 
} 
1

В случае, если исключение будет брошено, то вызов финализации будет завершаться, и в следующий раз он не будет вызываться, но объект будет GC-ed из памяти.

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

  • Нет связанных вопросов^_^