Buona domenica a tutti, volevo proporre questo semplice programmino:
public class Tempo {
protected int ore, minuti, secondi;
static public char separatore = ':';
public Tempo () { // costruttore
ore = minuti = secondi = 0;
}
public Tempo (int ora, int minuto, int secondo) {
// costruttore
this();
assegnaTempo (ora, minuto, secondo);
}
public int assegnaTempo (int ora,
int minuto, int secondo) {
if (ora >= 0 && ora < 24 && minuto >= 0 &&
minuto < 60 && secondo >= 0 && secondo < 60 ) {
ore = ora;
minuti = minuto;
secondi = secondo;
return 0;
} else
return -1;
}
public int leggiOra () {
return ore;
}
public int leggiMinuti () {
return minuti;
}
public int leggiSecondi () {
return secondi;
}
public void aggiungiOre (int numOre) {
ore = ore + numOre;
while (ore > 23)
ore = ore - 24;
}
public void visualizza (boolean ritornoACapo) {
System.out.print(""+ ore + separatore
+ minuti + separatore+secondi+separatore);
}
}
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) throws TempoExceptio {
if (super.assegnaTempo(ora,minuto,secondo) == 0)
return 0;
else throw new TempoException("Errore in assegnatempo");
}
}
public class TempoException extends RuntimeException {
public TempoException() {
super();
}
public TempoException(String msg) {
super(msg);
}
}
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);
}
}
}
Se tolgo la clausola throws TempoException nel metodo "assegnaTempo" della classe "TempoConEccezioni", il programma funziona lo stesso; no dovrebbe invece dare un errore di compilazione?