I denne opplæringen vil du lære om prøven … fang … endelig uttalelser for å håndtere unntak i JavaScript ved hjelp av eksempler.
De try
, catch
og finally
blokkene blir brukt til å håndtere unntak (en type av en feil). Før du lærer om dem, må du vite om typene feil i programmeringen.
Typer feil
I programmering kan det være to typer feil i koden:
Syntaksfeil : Feil i syntaksen. Hvis du for eksempel skriver consol.log('your result');
, kaster programmet ovenfor en syntaksfeil. Stavemåten console
er en feil i koden ovenfor.
Runtime Error : Denne typen feil oppstår under kjøringen av programmet. For eksempel å
kalle en ugyldig funksjon eller en variabel.
Disse feilene som oppstår under kjøretiden kalles unntak . La oss nå se hvordan du kan håndtere disse unntakene.
JavaScript prøve … catch Statement
Den try… catch
setningen brukes til å håndtere unntakene. Dens syntaks er:
try ( // body of try ) catch(error) ( // body of catch )
Hovedkoden er inne i try
blokken. try
Hvis det oppstår feil, går den til catch
blokken mens du utfører blokken. Den catch
blokken håndterer feilene som per fangst uttalelser.
Hvis det ikke oppstår noen feil, blir koden inne i try
blokken utført, og catch
blokken hoppes over.
Eksempel 1: Vis sortvariabel
// 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); )
Produksjon
NaN En feil fanget Feilmelding: ReferenceError: a er ikke definert
I det ovennevnte programmet er ikke en variabel definert. Når du prøver å skrive ut en variabel, viser programmet en feil. Den feilen er fanget i catch
blokken.
JavaScript prøve … fang … endelig uttalelse
Du kan også bruke try… catch… finally
uttalelsen til å håndtere unntak. Den finally
blokken utfører både når koden fullført eller hvis det oppstår en feil.
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 … til slutt 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'); )
Produksjon
NaN En feil fanget Feilmelding: ReferenceError: a er ikke definert. Til slutt vil den utføres hver gang
I det ovennevnte programmet oppstår det en feil, og den feilen blir fanget av catch
blokken. Den finally
blokken vil utføre i enhver situasjon (hvis programmet kjører vellykket eller hvis det oppstår en feil).
Merk : Du må bruke catch
eller finally
uttale etter try
uttalelse. Ellers vil programmet kaste en feil Uncaught SyntaxError: Manglende fangst eller til slutt etter forsøk.
JavaScript prøv … fang i setTimeout
Det try… catch
vil ikke fange unntaket hvis det skjedde i " tidsbestemt " kode, som i setTimeout (). For eksempel,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
Ovennevnte try… catch
fungerer ikke fordi motoren allerede har forlatt try… catch
konstruksjonen og funksjonen blir utført senere.
Den try… catch
blokken må være inne som funksjon å fange et unntaks inne i et tidsbestemt funksjon. For eksempel,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
Du kan også bruke throw
utsagnet med try… catch
utsagnet for å bruke brukerdefinerte unntak. For eksempel er et bestemt tall delt på 0 . Hvis du vil vurdere Infinity
som en feil i programmet, kan du kaste et brukerdefinert unntak ved å bruke throw
utsagnet for å håndtere den tilstanden.
Du vil lære om JavaScript-kasterklæringen i neste opplæring.