Salve a tutti,
come da titolo mi sto esercitando con le eccezioni.
Devo implementare questa classe:
Scrivere una classe astratta Java Opera, contenente i campi privati nome (String) e anno (int), durata(int), valutazioni (int[]) e il seguente metodo d'istanza:
public Opera (String titolo, int anno, int durata); crea un oggetto di tipo Opera ed assegna a ciascun campo dati il valore del parametro omonimo. In caso durata <= 0, o anno < 1900, il costruttore lancia un’eccezione accompagnata da un opportuno messaggio di errore, distinguendo i due casi.
Eccola qui:
public class Opera
{
private String nome;
private int anno;
private int durata;
private int[] valutazioni;
public Opera (String titolo, int anno, int durata) throws Exception
{
if(durata <= 0)
throw new Exception("Errore: durata <= 0");
if(anno < 1900)
throw new Exception("Errore: anno < 1900");
this.nome = titolo;
this.anno = anno;
this.durata = durata;
}
}
Da quello che ho capito, nel caso in cui si entrasse in uno dei due if, il metodo (costruttore) interromperebbe la sua esecuzione e lancerebbe l'eccezioni al metodo chiamate (in questo caso il main che vedete qui sotto):
public class Main
{
public static void main(String[] args)
{
try {
Opera prima = new Opera("Back in black", 1980, 0);
}
catch (Exception ex)
{
}
}
Ok, in questo caso nel try si riscontrerebbe un'eccezione e infatti mi viene stampato il messaggio relativo a quell'errore ("Errore: durata <= 0").
Quello che non ho capito è: che devo farci con il catch ?
Cioè, so che deve contenere il blocco di istruzioni utili per la gestione dell'eccezione. Ma con gestione che si intende? Dovrei cambiare la durata dell'opera? Non posso perché è di tipo private.
Oppure solamente un messaggio di errore?
E se volessi inserire il finally, dentro che ci andrebbe?
Grazie