I denna handledning lär du dig om försöket … fånga … slutligen uttalanden för att hantera undantag i JavaScript med hjälp av exempel.
De try
, catch
och finally
block används för att hantera undantag (en typ av ett fel). Innan du lär dig mer om dem måste du veta om vilka typer av fel i programmeringen.
Typer av fel
Vid programmering kan det finnas två typer av fel i koden:
Syntaxfel : Fel i syntaxen. Om du till exempel skriver skriver consol.log('your result');
programmet ovan ett syntaxfel. Stavningen av console
är ett misstag i ovanstående kod.
Runtime Error : Denna typ av fel inträffar under körningen av programmet. Till exempel att
anropa en ogiltig funktion eller en variabel.
Dessa fel som uppstår under körning kallas undantag . Låt oss nu se hur du kan hantera dessa undantag.
JavaScript försök … fånga uttalande
Det try… catch
uttalandet används för att hantera undantagen. Dess syntax är:
try ( // body of try ) catch(error) ( // body of catch )
Huvudkoden finns i try
blocket. try
Om ett fel inträffar, går det till catch
blocket medan blocket körs . Den catch
blocket hanterar felen som per fångst uttalanden.
Om inget fel uppstår try
körs koden inuti blocket och catch
blocket hoppas över.
Exempel 1: Visa odeklarerad 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 Ett fel upptäcktes Felmeddelande: ReferenceError: a är inte definierat
I programmet ovan definieras inte en variabel. När du försöker skriva ut en variabel, ger programmet ett fel. Det felet fångas i catch
blocket.
JavaScript försök … fånga … äntligen uttalande
Du kan också använda try… catch… finally
uttalandet för att hantera undantag. Den finally
blocket utför både när koden körs utan problem eller om ett fel uppstår.
Syntaxen för try… catch… finally
blocket är:
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
Exempel 2: försök … fånga … äntligen exempel
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 Ett fel uppstod Felmeddelande: ReferenceError: a är inte definierat Slutligen kommer att köras varje gång
I ovanstående program inträffar ett fel och detta fel upptäcks av catch
blocket. Den finally
blocket kommer att utföra i alla situationer (om programmet körs utan problem eller om ett fel uppstår).
Obs : Du måste använda catch
eller finally
uttalande efter try
uttalande. I annat fall kommer programmet att kasta ett fel Uncaught SyntaxError: Missing catch or slutligen after try.
JavaScript-försök … fånga i setTimeout
Det try… catch
kommer inte att fånga undantaget om det hände i " tidsinställd " kod, som i setTimeout (). Till exempel,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
Ovanstående try… catch
fungerar inte eftersom motorn redan har lämnat try… catch
konstruktionen och funktionen utförs senare.
Den try… catch
blocket måste vara inne den funktionen att fånga ett undantag i en tidsfunktion. Till exempel,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
Du kan också använda throw
uttalandet med try… catch
uttalandet för att använda användardefinierade undantag. Till exempel divideras ett visst antal med 0 . Om du vill betrakta Infinity
som ett fel i programmet kan du kasta ett användardefinierat undantag med hjälp av throw
uttalandet för att hantera det villkoret.
Du lär dig mer om JavaScript-uttalandet i nästa handledning.