método finalizar e exceções

Eu não entendo muito bem quando uma exceção é ignorada pelo GC quando ele recupera da memory um object.

Se eu tiver um try/catch em um método finalize, vejo que ele é sempre executado … então, quais são os casos em que a exceção não é lançada?

Obrigado.

o método finalize é executado pelo encadeamento finalizador. se você der uma exceção, o finalizador irá ignorá-lo (engoli-lo). Caso contrário, o thread finalizador morreria. Isso se aplica a exceções lançadas e não capturadas pelo seu código (dentro de finalize() ). Se você pegar a exceção, é business as usual.

Isso significa que qualquer exceção lançada do método finalize será ignorada. No entanto, as exceções dentro dele ainda funcionam como de costume.

As duas respostas existentes parecem dizer que o finalizador irá ignorar quaisquer exceções não identificadas. Isso parece contradizer a resposta aqui: Exceção no método finalize que parece ter uma referência correta à JSL. Ele diz que exceções não capturadas irão abortar a finalização do object em questão (possivelmente vazando resources), mas que o próprio thread finalizador continuará finalizando outros objects. Isso corresponde aos resultados empíricos.