PDA

View Full Version : [JAVA] Chiarimento eccezzioni


biowep
07-04-2014, 15:55
Salve, volevo sapere come mai non posso lanciare un'eccezione generica in Java
throw new Exception("errore");
Il messaggio di errore in Eclipse è "Unhandled exception type Exception".
Devo sempre specificare nel prototipo del metodo "throws Exception" per non avere errori?
E se volessi generare tante sottoclassi diverse di errori, devo specificarle tutte?

VICIUS
07-04-2014, 20:06
Tutte le eccezioni che ereditano da Exception vanno gestite in qualche modo altrimenti il compilatore si rifiuta di generare il bytecode. Puoi usare try/catch per farlo tu lasciare il compito a chi chiama la funzione usando throws. Quelle che ereditano da RuntimeException, invece, non vengono controllate. Puoi lanciarle quando e dove ti pare senza doverle specificare ogni volta. In entrambi i casi le eccezioni sono oggetti quindi se vuoi creare un errore PincoPalloException devi prima creare una classe con quel nome che eredita da Exception/RuntimeException a seconda di come vuoi che venga gestita.

sottovento
07-04-2014, 20:17
Tutte le eccezioni che ereditano da Exception vanno gestite in qualche modo altrimenti il compilatore si rifiuta di generare il bytecode. Puoi usare try/catch per farlo tu lasciare il compito a chi chiama la funzione usando throws. Quelle che ereditano da RuntimeException, invece, non vengono controllate. Puoi lanciarle quando e dove ti pare senza doverle specificare ogni volta. In entrambi i casi le eccezioni sono oggetti quindi se vuoi creare un errore PincoPalloException devi prima creare una classe con quel nome che eredita da Exception/RuntimeException a seconda di come vuoi che venga gestita.
Beh, non esattamente, visto che RuntimeException deriva da Exception.
Per questo motivo sarebbe opportuno non gestire l'eccezione Exception ma usare sempre sottoclassi, in modo da evitare effetti indesiderati... fortunatamente i vari IDE (Netbeans, Eclipse, ...) forniscono un aiuto efficace