Corso di Java

(senza pretese)

Lezione nove: i blocchi try...catch


Le eccezioni
La discussione dei blocchi try...catch rientra nel più ampio argomento della corretta gestione delle eccezioni. Semplificando molto, si può dire che le eccezioni sono il modo che ha Java per dirti che qualcosa non funziona correttamente. Se avete già provato a fare qualche programmino, vi sarete accorti che talvolta al momento di compilare ed eseguire, saltano fuori delle strane scritte che indicano degli errori nel codice. Ebbene, queste sono le eccezioni.
Normalmente, se non viene presa alcuna 'precauzione', il programma non viene fatto girare e vengono appunto generate le eccezioni.
Se invece decidiamo di gestire questi possibili errori, specificando cosa deve succedere al loro verificarsi, il programma verrà compilato e risponderà agli errori nel modo in cui vogliamo noi.
Il metodo migliore per fare questo è usare i blocchi try...catch.
Vediamo quindi quali sono le caratteristiche fondamentali di queste istruzioni: il codice 'pericoloso', ovvero quello che può generare delle eccezioni e non permettere al programma di essere eseguito con successo deve essere messo all'interno del blocco try { }, mentre la gestione dell'errore deve essere specificata dentro quello catch { }.
In parole povere è come se dicessimo al compilatore: prova questo codice (quello dentro try), se va bene continua, se genera una eccezione fai quello che c'è scritto dentro catch.
Diamo allora un'occhiata al blocco che era presente nel programma di esempio della scorsa lezione:


  try {
    UIManager.setLookAndFeel(
         UIManager.getSystemLookAndFeelClassName());
         }
    catch (Exception e)
    {
     JOptionPane.showMessageDialog(null, "Impossibile"+
     " impostare lo stile "+e);
    }

Il suo significato è il seguente: l'istruzione dentro try serve per impostare lo stile grafico della pagina (tramite la chiamata al metodo setLookAndFeel() della classe UIManager, ed ha come argomento getSystemLookAndFeelClassName() che attribuisce alla finestra lo stesso stile di quello utilizzato dal sistema operativo nel quale operiamo). Questo codice potrebbe generare una eccezione, ovvero potrebbe non essere in grado di impostare tale stile. Allora per evitare che il programma non parta, aggiungiamo il blocco catch con argomento l'eccezione generata, e al suo interno ha il codice necessario che in caso di tale eccezione fa apparire un dialog box con scritto: "Impossibile impostare lo stile " seguito dal codice dell'eccezione generata.

Due importanti considerazioni da fare sono queste: il blocco catch può essere lasciato vuoto, ignorando l'eccezione generata (attenzione! in questo modo non facciamo nulla, ma il programma NON si blocca, mentre non usando try...catch non facciamo nulla ugualmente, ma il programma non continua!) oppure possiamo far seguire il blocco try da più blocchi catch in successione, questo per fare in modo che se un codice genera più eccezioni, possano essere tutte gestite senza dover riscrivere n volte il blocco try (e non è poco!!!).
Infine, se dobbiamo fare in modo che una parte di codice sia eseguita indipendentemente da quello che succede con le eccezioni (ad esempio per chiudere un file o uno stream) possiamo usare dopo il blocco try...catch, la clausola finally { }, che permette al codice scritto al suo interno di essere comunque eseguito.

Per la trattazione più approfondita della gestione delle eccezioni in Java (clausola throws, lancio delle eccezioni, generazione, trasferimento e molto altro) vi rimando ad un buon manuale, dato che lo spazio qui è limitato e non voglio fare un corso approfondito, ma solo darvi le basi per poter iniziare a programmare in Java!
Nella prossima lezione un breve excursus sui flussi di dati.

Prossima pagina

Indice Webdesign