Che cosa significa <init>
in un'eccezione Java?Che cosa significa <init> in un'eccezione Java?
Ad esempio:
BlahBlahException...
at java.io.FileInputStream.<init>(FileInputStream.java:20)
Che cosa significa <init>
in un'eccezione Java?Che cosa significa <init> in un'eccezione Java?
Ad esempio:
BlahBlahException...
at java.io.FileInputStream.<init>(FileInputStream.java:20)
che l'eccezione viene lanciata nella costruzione dell'oggetto, ci sono due opzioni:
Dai un'occhiata a questa demo che ho scritto: 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>
si chiama
Istanza Metodo di inizializzazione
che viene creato dal compilatore java dal costruttore definito. Sebbene non sia una definizione del metodo valida, la tua JVM si aspetta che questo e qualsiasi cosa tu inserisca nel costruttore sarà eseguito nel metodo. Pertanto, quando si esegue un'eccezione da, si può essere sicuri che provenga dal costruttore della classe java eseguita. Maggiori informazioni su questo sugli articoli della tecnica di progettazione di Bill Venner al numero Object Initialization.
Nota rapida: il tag "errori del compilatore" suggerisce che potresti non tracciare un'appropriata distinzione tra errori in fase di compilazione ed eccezioni in fase di esecuzione. Questo * non è * un errore del compilatore, è un'eccezione. (Ora modifico il tag, ma è qualcosa di cui essere a conoscenza.) –