slide

Transcript

slide
Fondamenti di Informatica T-1
Eccezioni
Situazioni critiche
●
●
●
Nei sistemi vi sono situazioni critiche che,
prevedibilmente, potrebbero generare errori (ad esempio,
l'apertura di un file, una connessione in rete, o il tentativo di
convertire in numero una stringa).
Java introduce il concetto di eccezione, come strumento
per gestire operazioni critiche:
● Si tenta di eseguire l'azione, in un "blocco" controllato
● In caso di errore, si "lancia" un'eccezione
● L'eccezione viene "catturata" da un gestore che prende le
contromisure
Può essere comodo sfruttare le eccezioni come strumento
per rappresentare nuovi "tipi di errore" e lanciare un allarme
personalizzato in presenza di situazioni anomale nella logica
del programma.
Fondamenti di Informatica T-1
Francesco Casimiro
Lancio di eccezioni
● Nel momento in cui viene individuata la situazione
critica, l'oggetto che sta operando deve "lanciare"
l'eccezione:
● Si crea un oggetto di tipo Exception, indicando
una descrizione del problema
Exception e = new Exception("Si è
verificato un errore");
● Si lancia fuori l'eccezione con l'istruzione throw
throw e;
● Se all'interno di un metodo viene lanciata
un'eccezione, deve avvertire chi lo invoca:
public void metodo1() throws Exception
{...}
Fondamenti di Informatica T-1
Francesco Casimiro
Intercettare le eccezioni
●
Per intercettare le eccezioni, le operazioni critiche (= i
metodi che possono lanciare eccezioni) devono essere
eseguite in un blocco try/catch:
try{
metodo1();
...
}
catch(Exception e){
System.out.println(e.getmessage());
}
●
Un metodo che usa a sua volta un metodo che lancia
un'eccezione, può gestirla direttamente (try/catch) o
lasciare che se ne occupi chi lo invoca (rilancio
dell'eccezione), avvisandolo con la clausola throws.
È essenziale che nessuna eccezione raggiunga il main.
●
Fondamenti di Informatica T-1
Francesco Casimiro
Esercizio 1
Si scriva un programma Java che definisca opportuni classi, costruttori e
metodi per un servizio meteorologico. I dati gestiti dal programma sono
relativi a:
● Località, costituite dalle informazioni: nome, provincia e tipo (città,
località balneare, località sciistica).
● Previsioni, caratterizzate dalle informazioni: codice, località, data
(stringa del formato gg/mm/aaaa), tempo (una stringa che indica la
situazione meteo), temperatura. Il codice viene generato
automaticamente dal sistema nel formato P-<#progressivo>.
● Alcune previsioni includono dati specifici per località balneari e
sciistiche. Le prime, includono le condizioni del mare (calmo, mosso,
molto mosso). Le seconde, l'altezza del manto nevoso e il numero di
impianti di risalita aperti. Si lancino opportune eccezioni nel caso si tenti
di creare previsioni specifiche per località non valide.
● Si supponga che tali informazioni siano contenute in una classe
ServizioMeteo, nei vettori:
● luoghi, contenente i dati relativi alle località (al massimo 10000
elementi)
● previsioni, contenente i dati relativi alle previsioni
Fondamenti di Informatica T-1
●
Francesco Casimiro
Esercizio 1
Si definiscano i seguenti metodi:
1. metodo pericoloValanghe, che restituisce al chiamante il possibile
rischio di valanga (se la temperatura rilevata è maggiore di 15 gradi e
la quantità di neve non inferiore a 2 m)
2. metodo divietoDiBalneazione, che restituisce al chiamante l'indicazione
se in una località le condizioni del mare sono sfavorevoli
3. metodo meteTuristicheConsigliate, che, data una data, crei un vettore
di località, contenente le località balneari in cui, nella data specificata,
è consentita la balneazione, e le località sciistiche in cui ci sono
impianti aperti e non è presente il rischio di valanghe.
4. metodo inserisciLuogo che, data una località, la inserisca nel vettore
luoghi. Se il vettore è pieno, il metodo deve lanciare un'eccezione per
segnalare al chiamante che la località non è stata inserita
5. metodo inserisciPrevisione che, data una previsione, la inserisca nel
vettore previsioni (raddoppiandone le dimensioni qualora fosse pieno)
● Infine, il programma principale deve:
a. Inizializzare le strutture dati, creando e inserendo nei vettori istanze di
Localita e Previsioni
b. Chiedere all'utente una data e, invocando il metodo del punto 3,
Fondamenti di Informatica T-1
mostrare le mete turistiche consigliate.
Francesco Casimiro
●
Esercizio 2
●
●
●
Si scriva un programma Java che definisca opportuni classi,
costruttori e metodi per un negozio virtuale di articoli
multimediali. I dati gestiti dal programma sono relativi a:
● Articoli, caratterizzati da un identificativo univoco, un nome e
un prezzo
● Utenti, caratterizzati da un nome e una lista di download già
effettuati (un array già pieno).
Gli articoli si dividono in app, con voto (poor, nice, awesome) e
id uguale a "A-"+<#progressivo>, brani musicali, con genere e
artista e id uguale a "B-"+<#progressivo>, e ebook, con autore
e id uguale a "E-"+<#progressivo>
Si supponga che gli articoli siano raccolti in una classe Store, in
un vettore di massimo 10000 elementi.
Fondamenti di Informatica T-1
Francesco Casimiro
Esercizio 2
Si definiscano i seguenti metodi:
1. metodo genereUltimoBranoScaricato, che restituisce al chiamante la
stringa contenente il genere dell'ultimo brano scaricato da un
utente, lanciando un'eccezione se non è stato scaricato alcun brano
2. metodo inserisciArticolo, che dato un articolo lo inserisce nel
vettore, lanciando un'eccezione se il vettore è pieno.
3. metodo cercaArticolo, che, dato il nome di un articolo, restituisca
l'istanza dell'articolo richiesto, lanciando un'eccezione se non è stato
trovato.
4. metodo articoliConsigliati che, dato un utente, restituisca una lista
di articoli contenente i brani dello stesso genere dell'ultimo brano
scaricato, solo se l'utente ha già scaricato brani musicali, le app con
voto "awesome" e i libri gratuiti.
● Il programma principale deve:
a. Creare un'istanza di Store, utilizzando il metodo del punto 2 per
popolare il vettore di articoli, e una di Utente.
b. Invocare il metodo del punto 4 e mostrare a video i risultati.
●
Fondamenti di Informatica T-1
Francesco Casimiro