JavaScript prova ... cattura ... finalmente Statement

In questo tutorial imparerai le istruzioni try … catch … infine per gestire le eccezioni in JavaScript con l'aiuto di esempi.

I try, catche finallyblocchi 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… catchistruzione viene utilizzata per gestire le eccezioni. La sua sintassi è:

 try ( // body of try ) catch(error) ( // body of catch )

Il codice principale è all'interno del tryblocco. Durante l'esecuzione del tryblocco, se si verifica un errore, va al catchblocco. Il catchblocco gestisce gli errori secondo le istruzioni catch.

Se non si verifica alcun errore, il codice all'interno del tryblocco viene eseguito e il catchblocco 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 catchblocco.

JavaScript prova … cattura … finalmente Statement

È inoltre possibile utilizzare l' try… catch… finallyistruzione per gestire le eccezioni. Il finallyblocco viene eseguito sia quando il codice viene eseguito correttamente sia se si verifica un errore.

La sintassi del try… catch… finallyblocco è:

 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 catchblocco. Il finallyblocco verrà eseguito in qualsiasi situazione (se il programma viene eseguito correttamente o se si verifica un errore).

Nota : è necessario utilizzare catcho una finallydichiarazione dopo una trydichiarazione. Altrimenti, il programma genererà un errore Uncaught SyntaxError: Missing catch o finalmente dopo il tentativo.

JavaScript prova … cattura in setTimeout

Il try… catchnon 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… catchnon funzionerà perché il motore ha già lasciato il try… catchcostrutto e la funzione viene eseguita successivamente.

Il try… catchblocco 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' throwistruzione con l' try… catchistruzione per utilizzare le eccezioni definite dall'utente. Ad esempio, un certo numero viene diviso per 0 . Se vuoi considerare Infinityun errore nel programma, puoi lanciare un'eccezione definita dall'utente usando l' throwistruzione per gestire quella condizione.

Imparerai a conoscere l'istruzione JavaScript throw nel prossimo tutorial.

Articoli interessanti...