Gestione degli errori con try, catch e finally

La gestione delle eccezioni in Javascript è un semplice meccanismo che rende possibile la generazione (throw) di un errore (exception) se un blocco di codice non funziona correttamente e di verificare il tipo di errore. Quando viene generata un’eccezione, possiamo specificare un ulteriore blocco ( catch ) che viene eseguito. Per farlo, usiamo un blocco try { }  seguito da un blocco catch { } :

Il nostro codice di esempio ha un primo blocco try nel quale abbiamo scritto un semplice prompt di immissione che ci chiede “Il famoso colore Ferrari”. Il testo immesso andrà nella variabile colore . Se il testo immesso non corrisponderà alla stringa “rosso” faremo il throw di un’eccezione (cioè ne genereremo una) e faremo l’alert di un messaggio. Il blocco catch verrà eseguito soltanto se questa eccezione è stata generata.

In questo caso abbiamo creato un’istanza del costruttore Error , che è un tipo standard di Javascript che accetta un parametro con il quale definiremo il messaggio.

È fondamentale apprendere che la generazione di un’eccezione interrompe immediatamente l’esecuzione del codice e rimanda subito al blocco catch. Se infatti, facessimo un throw prima che il nostro codice finisca, le istruzioni scritte subito sotto non verrebbero eseguite e potremmo così lasciare a metà una esecuzione. Per ovviare a questo, possiamo usare il blocco finally in concomitanza o sostituzione del blocco catch :

Il blocco finally , quindi, verrà eseguito in ogni caso, che si sia verificato un’errore oppure no.

Questo sistema ha qualche lato negativo. Se nel nostro blocco try avessimo più funzioni che potenzialmente fanno un throw di una exception, non sarebbe possibile risalire a quale parte l’ha generata.