Leggiti anche i link riportati li sopra.
Intanto devo dire che mi sembra di aver capito che servono solo per gestire gli errori di sistema e
non gli eventuali errori logici gestibili dal programmatore
Le eccezzioni sono "errori" durante il runtime. Esistono molti tipi di eccezzioni, e possono essere controllare dal programmatore. Exception è la superclasse! RuntimeException gestisce appunto un errore di runtime.
Questa ha tante altre possibili eccezzioni ( http://java.sun.com/j2se/1.4.2/docs/...Exception.html guardati le sottoclassi).
Il blocco try/catch viene utilizzato per gestire queste eccezzioni che possono essere lanciate. Una classica eccezione è la divisione per 0! (ArithmeticException).
Il codice interessato deve essere messo all'interno di un try per essere catturato, se l'eccezione viene lanciata viene catturata da catch..che può eseguire un'altra operazione all'interno del suo blocco di codice.
codice:
try {
// Codice che può lanciare un eccezione, codice da "osservare" insomma.
} catch(Exception e) {
// Codice da eseguire in caso venga lanciata l'eccezione
}
Se all'interno di try viene lanciata l'eccezione, l'operazione che ne scaturisce è un "salto" sino alla clausola catch() corrispondente (possono essere anche annidate, comunque guarda la documentazione).
Al posto di Exception puoi mettere una sua sottoclasse (ad esempio se viene lanciato per una divisione per 0, lo puoi gestire con ArithmeticException).
Esiste anche il blocco finally. Tutto quello racchiuso li dentro viene eseguito anche quando viene lanciata l'eccezione; è comodo quando devono essere liberate delle risorse come ad esempio la chiusura di un file o una connessione.
throws, utilizzato su un metodo indica che quel metodo non gestirà l'eccezione ma la lancierà al metodo chiamante.
throw invece lancia un eccezione.
In più, puoi creare le tue eccezioni estendendo Exception.
Un esempio molto veloce
codice:
class TestException {
public static void main(String args[]) {
int n=10;
for(int i=10; i>=0; i--) {
System.out.println(n/i);
}
}
}
Come puoi notare quando i sarà uguale a 0 verrà lanciata un eccezione.
[code]
1
1
1
1
1
2
2
3
5
10
Exception in thread "main" java.lang.ArithmeticException: / by zero
at TestException.main(TestException.java:5)
[/quote]
Gestendola..
codice:
class TestException {
public static void main(String args[]) {
int n=10;
for(int i=10; i>=0; i--) {
try {
System.out.println(n/i);
} catch(ArithmeticException e) {
System.out.println("Eccezione controllata");
}
}
}
}
Come noti fanno parte del package java.lang.Exception, che viene importato automaticamente.. non è quindi necessario importare nulla!
output
codice:
1
1
1
1
1
2
2
3
5
10
Eccezione controllata
Da dire ci sarebbe molto di più, per cui mi fermo qui e spero di averti aiutato. Guardati la documentazione per il resto