¿Qué significa <init>
en una excepción de Java?¿Qué significa <init> en una excepción de Java?
Por ejemplo:
BlahBlahException...
at java.io.FileInputStream.<init>(FileInputStream.java:20)
¿Qué significa <init>
en una excepción de Java?¿Qué significa <init> en una excepción de Java?
Por ejemplo:
BlahBlahException...
at java.io.FileInputStream.<init>(FileInputStream.java:20)
Que la excepción en la construcción del objeto, hay dos opciones:
Mira esta demostración Escribí: 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();
}
}
Produce:
java.lang.RuntimeException: getObject
at Main$Test.getObject(Main.java:24)
at Main$Test.<init>(Main.java:22)
at Main.main(Main.java:9)
java.lang.RuntimeException: constructor
at Main$Test2.<init>(Main.java:31)
at Main.main(Main.java:12)
java.lang.NullPointerException
at Main$Test3.<init>(Main.java:38)
at Main.main(Main.java:15)
< init>
se llama
Método de inicialización de instancia
creado por el compilador de java del constructor que ha definido. Aunque no es una definición de método válida, su JVM espera que esto y todo lo que ponga en el constructor se ejecute en el método. Entonces cuando tienes una excepción con from, puedes estar seguro de que es del constructor de la clase java ejecutada. Lea más sobre esto en artículos de técnica de diseño de Bill Venner en Object Initialization.
Nota rápida: su etiqueta de "errores del compilador" sugiere que no está dibujando una distinción adecuada entre los errores de tiempo de compilación y las excepciones de tiempo de ejecución. Este * no es * un error de compilación, es una excepción. (Editaré la etiqueta ahora, pero es algo de lo que debe tenerse en cuenta). –