Referencia para objetos parcialmente construidos

Temos o seguinte código:

class A {
   static A ref;
   A() {
     ref= this;
      throw new Error();
   }
    public static void main() {
       try { new A(); } catch(Throwable t) {}
       //AQUI
   }
}

Qual vai ser o estado o programa em ‘//AQUI’, dado que ‘A.ref’ guarda uma referencia para um objeto que não foi construido por completo?

Indefinido? Zuado? Ok?

vai ficar ok
se tivesse mais coisa pra fazer ia zoar a populacao

rodei isso


public class A {
   static A ref;
   A() {
     ref= this;
      throw new Error();
   }
    public static void main(String [] args) {
       try { new A(); } catch(Throwable t) {}
        System.out.println(A.ref);
       //AQUI
   }
}

e apareceu saida sim, com enderecinho e tal. entao recuperou.
louco neh? bem, mas deveria ser isso mesmo.

Sei lá, eu acho que deveria ser comportamento indefinido manter referecia para objetos parcialmente construidos, dado que isso é uma violação dos principios de OO.