-
Java fornisce una ricca gerarchia di eccezioni. E' buona
norma usare le eccezioni predefinite, cercando nella API di Exception
[locale,
Medialab,
Sun]
se esiste una eccezione adeguata.
-
Comunque, un utente può definire una sua classe
di eccezioni e usarle come quelle di Java (può lanciarle, catturarle,
delegarne la gestione).
-
Le eccezioni di una nuova classe sono controllate
oppure non controllate a seconda della superclasse.
Esempio
Definiamo la classe di eccezioni TempoException:
public class TempoException
extends RuntimeException{
public
TempoException(){
super();
}
public
TempoException(String msg){
super(msg);
}
}
|
Estendiamo Tempo.java
in modo che se il metodo assegnaTempo riceve parametri
errati, genera un'eccezione. Si noti l'uso estensivo di super
per riutilizzare al massimo la superclasse Tempo.
public class TempoConEccezioni
extends Tempo{
public
TempoConEccezioni()
{
super();
}
public
TempoConEccezioni
(int ora, int
minuto, int secondo)
{
super (ora, minuto, secondo);
}
public
int assegnaTempo
(int ora,
int minuto,
int
secondo){
if (super.assegnaTempo(ora,minuto,secondo)
== 0)
return 0;
else throw new TempoException("Errore
in assegnatempo");
}
} |
Proviamo la nuova classe con un semplice programma:
public class UsaTempoConEccezioni{
public static void
main(String
[] args) {
try {
Tempo t = new
TempoConEccezioni
(99,99,99);
t.visualizza(true);
} catch (TempoException
e) {
System.out.println ("Errore:"
+ e);
}
}
} |
|