23 – Try-Catch e Debug

Adesso che stiamo introducendo argomenti sempre più complicati mi sembra il momento giusto di presentarvi due argomenti fondamentali, la funzione Try-Catch e la modalità debug.

A cosa servono questi metodi?
State programmando un programma con molte righe di codice e quando lo fate partire si blocca generando un’errore e voi non sapete cosa generi questo errore. Con questi metodi che vi illustrerò potremo trovare gli errori o evitare che il programma si blocchi se un’errore si verifica.
Partiamo!

Debug
Questo metodo serve a trovare gli errori. In pratica blocchiamo il programma ad una certa riga di codice e da lì in poi, premendo un certo pulsante che adesso vedremo, il programma avanzerà di un istruzione per volta mostrandoci ciò che accade per ogni singola istruzione.
Innanzitutto scegliamo in quale riga di codice il programma deve bloccarsi cliccando sulla barra numerata a sinstra del codice (possiamo selezionare più punti). Il numero sarà sostituito da un quadratino rosa/rosso e l’intera riga verrà sottolineata dello stesso colore come nell’immagine:

23.1
Poi facciamo partire il programma in modalità debug selezionando dal menu l’opzione:
23.2
Il programma verrà eseguito normalmente fino al primo punto di blocco.
Adesso che il programma è fermo potete eseguire ciascuna istruzione in due diversi modi in base ai due tasti:
F8 -> esegue ogni singola istruzione soltanto all’interno del metodo in cui il programma si è bloccato. Se poi questo metodo ne chiama altri premendo f8 eseguirete solo l’istruzione di chiamata ma del metodo chiamato non verrà eseguita ogni singola istruzione ma verrà eseguito tutto contemporaneamente, a meno che non abbiate posto un secondo punto di blocco anche nel metodo chiamato.
F7 -> esegue ogni singola istruzione da quel punto in poi cambiando anche classe (se ad esempio venisse eseguita l’istruzione “System.out.println” premendo f7 vedreste ogni singola istruzione/metodo invocato dal sistema nelle classi System per eseguire la stampa).
Io vi consiglio di usare F8 e porre un punto di stop nei metodi che siete interessati ad analizzare.
Le funzionalità della modalità debug però non si fermano qui. Durante l’esecuzione in modalità debug potrete inoltre visualizzare il valore assunto dalle variabili del vostro programma istruzione dopo istruzione nella schermata in basso a NetBeans dove di solito vedete anche gli output del programma:

23.3
Adesso sapete come fare a trovare un errore!

Try-Catch
Con questi comandi possiamo evitare che il programma si blocchi quando si genera un errore.
Facciamo subito un esempio molto semplice. Ipotiziamo di voler stampare un numero in ingresso con il seguente codice:

Scanner s=new Scanner(System.in);
double n=Double.parseDouble(s.nextLine());
System.out.println(n);

Se l’utente inserisse una lettera il programma si bloccherebbe stampato sull’output un messaggio di errore.
Possiamo evitare che si blocchi inserendo il try-catch:

try{
    Scanner s=new Scanner(System.in);
    double n=Double.parseDouble(s.nextLine());
    System.out.println(n);
}catch(Exception e)
{
    System.out.println("errore: devi inserire un numero");
}

In questo caso quando si verificherà l’errore nella riga “double n…” il try-catch “catturerà l’errore” e salterà ad eseguire il codice all’interno del catch. Le righe di codice al di sotto di “double n…”, sempre all’interno di try, non verranno eseguite. Se ci fossero altre righe di codice dopo il catch quelle verrebbero eseguite dopo aver eseguito le istruzioni all’interno del catch.
Quindi la sintassi generale è la seguente:

//eventuali altre righe di codice su cui il try-catch non agisce
try{
//codice che potrebbe generare un errore
}catch(Exception e)
{
//cosa faccio se si verifica un errore, potrei anche non fare niente
}
//eventuali altre righe di codice su cui il try-catch non agisce

Exception
Giusto due parole su Exception. Diciamo soltanto che si tratta di una classe che gestisce gli errori.
La variabile “e” contiene l’errore che si è generato e potete anche stamparlo:
Sistem.out.println(e+””);
Ovviamente “e” è un nome scelto a caso, avrei potuto anche chiamarla pippo.

Si conclude qui l’articolo. Adesso sapete come trovare o gestire gli errori nei vostri programmi!
Alla prossima!

Please follow and like us: