2013-06-11 4 views
7

Sono nuovo di Java e stavo cercando di gestire le eccezioni. Quando abbiamo intercettare le eccezioni Java, dichiariamo e utilizzare un Object della classe Exception senza inizializzarla, vale a direClassi di eccezioni Java

catch(NullPointerException e) 
    e.printStackTrace(); 

Quindi la mia domanda è: come siamo in grado di utilizzare l'oggetto di riferimento e senza un'istanza esso?

+0

Suggerimento: l'oggetto eccezione che si sta intercettando * è stato * istanziato all'interno del blocco che ha generato l'eccezione per iniziare. – Santa

+0

Lo stesso vale per i parametri del metodo. Sono costruiti altrove e inviati al metodo. Non diverso con le eccezioni, solo un meccanismo diverso. – EJP

risposta

8

Sono ben istanziato:

void example() { 
    throw new UnsupportedOperationException("message"); 
}  // ^^^ 

void demonstration() { 
    try { 
     example(); 
    } catch (UnsupportedOperationException e) { 
     e.printStackTrace(); 
    } 
} 

Questo esempio molto semplice dovrebbe essere piuttosto auto esplicativo ...

1

L'eccezione è (spesso) istanziata quando l'errore si verifica con un'istruzione throw. Ad esempio,

throw new NullPointerException(); 

(Si noti che questo è solo un esempio. NPE di solito non sono esplicitamente gettati nel proprio codice.)

La clausola catch è simile a una funzione che dichiara un parametro. Si consideri la funzione

void func(String s) { 
    // ... 
} 

func non un'istanza s. Il String viene creato da qualche altra parte e passato alla funzione. Allo stesso modo, creiamo un'eccezione con throw ed è "passata" al tipo di clausola catch come un parametro.

0

Sì, riferimento e in catch(NullPointerException e) è per la possibile eccezione gettato in codice utilizzando throw new NullPointerException("some error message");

0

L'eccezione viene creata un'istanza. Succede internamente alla classe che potenzialmente può generare un'eccezione. Per vostra informazione, la parola chiave throw è responsabile di creare e lanciare l'eccezione. Il tuo metodo di cattura attirerà l'eccezione. È inoltre possibile implementare le proprie eccezioni utilizzando questa parola chiave.