I denne vejledning lærer du om forsøget … fang … endelig udsagn om at håndtere undtagelser i JavaScript ved hjælp af eksempler.
De try
, catch
og finally
blokkene bruges til undtagelser (en type af fejl). Inden du lærer om dem, skal du vide om typerne af fejl i programmeringen.
Typer af fejl
Ved programmering kan der være to typer fejl i koden:
Syntaksfejl : Fejl i syntaksen. For eksempel, hvis du skriver consol.log('your result');
, kaster ovenstående program en syntaksfejl. Stavemåden for console
er en fejl i ovenstående kode.
Runtime Error : Denne type fejl opstår under udførelsen af programmet. For eksempel at
kalde en ugyldig funktion eller en variabel.
Disse fejl, der opstår under kørsel, kaldes undtagelser . Lad os nu se, hvordan du kan håndtere disse undtagelser.
JavaScript prøv … fange erklæring
Den try… catch
sætning bruges til at håndtere undtagelser. Dens syntaks er:
try ( // body of try ) catch(error) ( // body of catch )
Hovedkoden er inde i try
blokken. try
Hvis der opstår en fejl under blokering, går den til catch
blokken. Den catch
blok håndterer fejlene som pr fangstopgoerelser.
Hvis der ikke opstår nogen fejl, try
udføres koden inde i blokken, og catch
blokken springes over.
Eksempel 1: Vis ikke-deklareret variabel
// 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); )
Produktion
NaN En fejl fanget Fejlmeddelelse: ReferenceError: a er ikke defineret
I ovenstående program er en variabel ikke defineret. Når du prøver at udskrive en variabel, kaster programmet en fejl. Denne fejl er fanget i catch
blokken.
JavaScript prøv … fang … endelig erklæring
Du kan også bruge try… catch… finally
erklæringen til at håndtere undtagelser. Den finally
blok udfører både når koden kører med succes, eller hvis der opstår en fejl.
Syntaksen for try… catch… finally
blokken er:
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
Eksempel 2: prøv … fang … endelig eksempel
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'); )
Produktion
NaN En fejl fanget Fejlmeddelelse: ReferenceError: a er ikke defineret Endelig udføres hver gang
I ovenstående program opstår der en fejl, og denne fejl fanges af catch
blokken. Den finally
blok vil udføre i enhver situation (hvis programmet kører med succes, eller hvis der opstår en fejl).
Bemærk : Du skal bruge catch
eller finally
udsagn efter try
erklæring. Ellers kaster programmet en fejl Uncaught SyntaxError: Manglende fangst eller endelig efter forsøg.
JavaScript prøv … fang i setTimeout
Den try… catch
fanger ikke undtagelsen, hvis den skete i " tidsbestemt " kode, som i setTimeout (). For eksempel,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
Ovenstående try… catch
fungerer ikke, fordi motoren allerede har forladt try… catch
konstruktionen, og funktionen udføres senere.
Den try… catch
blok skal være inde denne funktion til at fange en undtagelse inde i en tidsstyret funktion. For eksempel,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
Du kan også bruge throw
udsagnet med try… catch
erklæringen til at bruge brugerdefinerede undtagelser. For eksempel divideres et bestemt antal med 0 . Hvis du vil overveje Infinity
som en fejl i programmet, kan du kaste en brugerdefineret undtagelse ved hjælp af throw
udsagnet til at håndtere denne tilstand.
Du vil lære om JavaScript-udsagnet i næste tutorial.