In questo tutorial imparerai le istruzioni try … catch … infine per gestire le eccezioni in JavaScript con l'aiuto di esempi.
I try
, catch
e finally
blocchi sono utilizzati per gestire le eccezioni (un tipo di errore). Prima di conoscerli, è necessario conoscere i tipi di errori nella programmazione.
Tipi di errori
Nella programmazione possono esserci due tipi di errori nel codice:
Errore di sintassi : errore nella sintassi. Ad esempio, se scrivi consol.log('your result');
, il programma precedente genera un errore di sintassi. L'ortografia di console
è un errore nel codice precedente.
Errore di runtime : questo tipo di errore si verifica durante l'esecuzione del programma. Ad esempio,
chiamare una funzione non valida o una variabile.
Questi errori che si verificano durante il runtime sono chiamati eccezioni . Vediamo ora come gestire queste eccezioni.
JavaScript try… catch Statement
L' try… catch
istruzione viene utilizzata per gestire le eccezioni. La sua sintassi è:
try ( // body of try ) catch(error) ( // body of catch )
Il codice principale è all'interno del try
blocco. Durante l'esecuzione del try
blocco, se si verifica un errore, va al catch
blocco. Il catch
blocco gestisce gli errori secondo le istruzioni catch.
Se non si verifica alcun errore, il codice all'interno del try
blocco viene eseguito e il catch
blocco viene saltato.
Esempio 1: visualizzazione della variabile non dichiarata
// program to show try… catch in a program const numerator= 100, denominator = 'a'; try ( console.log(numerator/denominator); // forgot to define variable a console.log(a); ) catch(error) ( console.log('An error caught'); console.log('Error message: ' + error); )
Produzione
NaN È stato rilevato un errore Messaggio di errore: ReferenceError: a non è definito
Nel programma precedente, una variabile non è definita. Quando si tenta di stampare la variabile a, il programma genera un errore. Quell'errore viene catturato nel catch
blocco.
JavaScript prova … cattura … finalmente Statement
È inoltre possibile utilizzare l' try… catch… finally
istruzione per gestire le eccezioni. Il finally
blocco viene eseguito sia quando il codice viene eseguito correttamente sia se si verifica un errore.
La sintassi del try… catch… finally
blocco è:
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
Esempio 2: prova … cattura … finalmente Esempio
const numerator= 100, denominator = 'a'; try ( console.log(numerator/denominator); console.log(a); ) catch(error) ( console.log('An error caught'); console.log('Error message: ' + error); ) finally ( console.log('Finally will execute every time'); )
Produzione
NaN È stato rilevato un errore Messaggio di errore: ReferenceError: a non è definito Infine verrà eseguito ogni volta
Nel programma precedente, si verifica un errore e tale errore viene rilevato dal catch
blocco. Il finally
blocco verrà eseguito in qualsiasi situazione (se il programma viene eseguito correttamente o se si verifica un errore).
Nota : è necessario utilizzare catch
o una finally
dichiarazione dopo una try
dichiarazione. Altrimenti, il programma genererà un errore Uncaught SyntaxError: Missing catch o finalmente dopo il tentativo.
JavaScript prova … cattura in setTimeout
Il try… catch
non cattura l'eccezione se è successo in codice " temporizzato ", come in setTimeout (). Per esempio,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
Quanto sopra try… catch
non funzionerà perché il motore ha già lasciato il try… catch
costrutto e la funzione viene eseguita successivamente.
Il try… catch
blocco deve essere all'interno di quella funzione per catturare un'eccezione all'interno di una funzione temporizzata. Per esempio,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
È inoltre possibile utilizzare l' throw
istruzione con l' try… catch
istruzione per utilizzare le eccezioni definite dall'utente. Ad esempio, un certo numero viene diviso per 0 . Se vuoi considerare Infinity
un errore nel programma, puoi lanciare un'eccezione definita dall'utente usando l' throw
istruzione per gestire quella condizione.
Imparerai a conoscere l'istruzione JavaScript throw nel prossimo tutorial.