JavaScript try/catch/finally-satsen

Definition och användning

try/catch/finally-satsen hanterar delvis eller helt alla möjliga fel i ett kodblock samtidigt som koden fortfarande körs.

Fel kan orsakas av programmerarens kodningsfel, felaktiga inmatningar som leder till fel och andra oförutsedda situationer.

try-satsen tillåter dig att definiera en kodblock som ska testas för fel vid körning.

Om ett fel inträffar i try-blocket, tillåter catch-satsen dig att definiera ett kodblock att köra.

finally-satsen tillåter dig att köra kod efter try och catch, oavsett resultat.

Kommentar:catch- och finally-satserna är valfria, men en av dem måste användas när try-satsen används (om inte båda samtidigt).

Tips:När ett fel inträffar, stoppar JavaScript vanligtvis och genererar ett felmeddelande. Använd throw-satsen för att skapa anpassade fel (kasta undantag). Om du använder throw tillsammans med try och catch kan du kontrollera programflödet och generera anpassade felmeddelanden.

För mer information om JavaScript-fel, lär dig JavaScript-fel教程.

Exempel

I detta exempel har vi gjort ett misstag i texten i koden (i try-blocket).

Detta exempel bör visa "Välkommen gäst!", men alert stavningen är fel.

catch-blocken fångar fel och kör koden för att hantera det:

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
try {
  adddlert("Välkommen gäst!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>
</body>
</html>

Prova själv

Mer TIY-exempel finns längre ner på sidan.

Syntax

try {
  tryCode - Kodblock som ska försökas
}
catch(err) {
  catchCode - Kodblock för att hantera fel
} 
finally {
  finallyCode - Kodblock som ska köras oavsett resultat av try / catch
}

Parametervärde

Parameter Beskrivning
tryCode Obligatorisk. Koden som ska testas för fel under körning.
err Obligatorisk, om används tillsammans med catch. Ange den lokala variabel som refererar till felobjektet. Variabeln kan referera till ett Error-objekt (som innehåller information om det inträffade felet, till exempel meddelandet "'addlert' är inte definierat"). Om undantaget skapades av en throw-sats, refererar variabeln till objektet som specificerades i throw-satsen (se "Fler exempel").
catchCode Valfritt. Koden som ska köras om ett fel uppstår i try-blocket. Om inget fel uppstår, körs denna kodblock aldrig.
finallyCode Valfritt. Koden som alltid ska köras, oavsett resultat av try / catch.

Tekniska detaljer

JavaScript-version: ECMAScript 3

Mer exempel

Exempel

Detta exempel kontrollerar inmatningen. Om värdet är felaktigt, kastas ett undantag (err).

catch-satsen fångar undantag (err) och visar anpassade felmeddelanden:

<!DOCTYPE html>
<html>
<body>
<p>Ange ett nummer mellan 5 och 10:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Testa Input</button>
<p id="message"></p>
<script>
function myFunction() {
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "is Empty";
    if(isNaN(x)) throw "not a number";
    if(x > 10) throw "too high";
    if(x < 5) throw "too low";
  }
  catch(err) {
    message.innerHTML = "Input " + err;
  }
}
</script>
</body>
</html>

Prova själv

Exempel

finally-satsen låter dig köra kod efter try och catch, oavsett resultat:

function myFunction()
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "Tom";
    if(isNaN(x)) throw "Inte ett nummer";
    if(x > 10) throw "För högt";
    if(x < 5) throw "För lågt";
  }
  catch(err) {
    message.innerHTML = "Fel: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}

Prova själv

Webbläsare stödjer

语句 Chrome IE Firefox Safari Opera
try/catch/finally Stöd Stöd Stöd Stöd Stöd

Relaterade sidor

JavaScript-tutorials:JavaScript-fel

JavaScript referenshandbok:JavaScript throw-sats