Есть ли какие-либо сведения о том, очищен ли объект с помощью finalize()
, если этот конструктор объекта исключает.
Когда этот метод вызывается, как известно, плохо определено. Согласно руководству:
Язык программирования Java не гарантирует, какой поток будет вызывать метод finalize для любого заданного объекта. Это гарантировано, однако, что поток, который вызывает завершение, не будет зависящие от пользователя блокировки синхронизации при вызове finalize. Если исключенное исключение выбрано методом finalize, исключение игнорируется и завершается завершение этого объекта.
http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#finalize%28%29
Я не смог запустить метод finalize таким образом. Кто-нибудь знает, является ли он безоговорочным, чтобы не быть вызванным или если он в некоторых случаях вызван после того, как конструктор не смог инициализировать объект (thew исключение).
Я спрашиваю об этом, потому что у меня есть объект, который нельзя очищать дважды. Я пытаюсь понять, можно ли очистить до выброса исключения или оставить маркер для finalize()
, чтобы эффективно пропускать и ничего не делать.