O que significa em uma exceção Java?

O que significa em uma exceção Java?

Por exemplo:

 BlahBlahException... at java.io.FileInputStream.(FileInputStream.java:20) 

Que a exceção é lançada na construção do object, existem duas opções:

  • no construtor
  • enquanto inicializa variables

Confira esta demo que escrevi: http://ideone.com/Mm5w5


 class Main { public static void main (String[] args) throws java.lang.Exception { try { new Test(); } catch (Exception e) { e.printStackTrace(); } try { new Test2(); } catch (Exception e) { e.printStackTrace(); } try { new Test3(); } catch (Exception e) { e.printStackTrace(); } } static class Test { Object obj = getObject(); Object getObject() { throw new RuntimeException("getObject"); } } static class Test2 { Test2() { throw new RuntimeException("constructor"); } } static class Test3 { Object obj1 = null; String str = obj1.toString(); } } 

Produz:

 java.lang.RuntimeException: getObject at Main$Test.getObject(Main.java:24) at Main$Test.(Main.java:22) at Main.main(Main.java:9) java.lang.RuntimeException: constructor at Main$Test2.(Main.java:31) at Main.main(Main.java:12) java.lang.NullPointerException at Main$Test3.(Main.java:38) at Main.main(Main.java:15) 

< init >

é chamado

Método de boot de instância

que é criado pelo seu compilador java a partir do construtor que você definiu. Embora não seja uma definição de método válida, sua JVM espera isso e qualquer coisa que você colocar no construtor será executada no método. Então quando você é uma exceção com from, você pode ter certeza que é do construtor da class java executada. Leia mais sobre isso nos artigos da técnica de design de Bill Venner sobre Inicialização de Objetos .