JavaScriptin try/catch/finally-lause

Määrittely ja käyttö

Try/catch/finally-lause käsittelee koodin lohkossa mahdollisesti tapahtuvia osittaisia tai täydellisiä virheitä samalla kun koodia suoritetaan.

Virheet voivat olla ohjelmoijan aiheuttamia koodivirheitä, virheellisiä syötteitä aiheuttamia virheitä ja muita odottamattomia tilanteita.

Try-lause mahdollistaa virheellisen koodin lohkon määrittämisen suoritettaessa virheen tarkistamista.

Jos try-lohkossa tapahtuu virhe, catch-lause mahdollistaa määritetyn koodiblokin suorittamisen.

finally-lause mahdollistaa koodin suorittamisen try- ja catch-lohkon jälkeen riippumatta tuloksesta.

Huomautus:catch- ja finally-lauseet ovat valinnaisia, mutta niistä täytyy käyttää ainakin yksi try-lauseen kanssa (ei molempia yhdessä).

Vinkki:Virhe tapahtuessa JavaScript lopettaa suorituksen ja luo virheilmoituksen. Luo mukautetut virheet (heitä poikkeuksia) throw-lauseella (heitä poikkeuksia). Jos käytät throwia yhdessä try- ja catch-lauseiden kanssa, voit hallita ohjelman suoritusvirtaa ja luoda mukautetut virheilmoitukset.

Lisää tietoa JavaScript-virheistä löydät JavaScript-virheopastuksesta.

Esimerkki

Tässä esimerkissä olemme kirjoittaneet väärin koodiin (try-lohkossa).

Tämä esimerkki tulisi ilmoittaa "Tervetuloa vieraaksi!", mutta alert-kirjainta on kirjoitettu väärin.

catch-lohko ottaa vastaan virheet ja suorittaa koodia niiden käsittelyä varten:

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
try {
  adddlert("Tervetuloa vieraaksi!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>
</body>
</html>

kokeile itse

Lisää TIY-esimerkkejä sivun alalta.

Syntaksi

try {
  tryCode - Koodibloki, jota yritetään
}
catch(err) {
  catchCode - Koodibloki, joka käsittelee virheitä
} 
lopuksi {
  finallyCode - Koodibloki, joka suoritetaan riippumatta try / catch tuloksesta
}

Parametriset arvot

Parametri Kuvaus
tryCode Välttämätön. Suoritettavaa virheen tarkistava koodibloki.
err Välttämätön, jos käytetään yhdessä catchin kanssa. Määritä viitataan virheen paikallinen muuttuja. Tämä muuttuja voi viitata Error-objektiin (jossa on tietoa tapahtuneesta virheestä, esimerkiksi viesti "'addlert' is not defined"). Jos poikkeus on luotu throw-lauseella, viittaus on throw-lauseessa määritelty objekti (katso "Lisää esimerkkejä").
catchCode Valinnainen. Suoritettava koodibloki, jos try-lohkossa tapahtuu virhe. Jos virhettä ei tapahdu, tämä koodibloki ei koskaan suoriteta.
finallyCode Valinnainen. Suoritettava koodibloki riippumatta try / catch tuloksesta.

Tekninen yksityiskohta

JavaScript-versio: ECMAScript 3

Lisää esimerkkejä

Esimerkki

Tämä esimerkki tarkistaa syötteen. Jos arvo on väärin, heitetaan poikkeus (err).

catch lauseen avulla otetaan vastaan poikkeukset (err) ja näytetään mukautettu virheilmoitus:

<!DOCTYPE html>
<html>
<body>
<p>Lisää numero välillä 5 ja 10:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Testaa Syöte</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 "On tyhjä";
    if(isNaN(x)) throw "Ei luku";
    if(x > 10) throw "Liian korkea";
    if(x < 5) throw "Liian matala";
  }
  catch(err) {
    message.innerHTML = "Syöte " + err;
  }
}
</script>
</body>
</html>

kokeile itse

Esimerkki

lopullisesti lauseesta suoritetaan koodi try ja catch jälkeen riippumatta tuloksesta:

function myFunction()
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "Tyhjä";
    if(isNaN(x)) throw "Ei luku";
    if(x > 10) throw "Liian korkea";
    if(x < 5) throw "Liian matala";
  }
  catch(err) {
    message.innerHTML = "Virhe: " + err + ".";
  }
  lopuksi {
    document.getElementById("demo").value = "";
  }
}

kokeile itse

selain tukee

ilmaisu Chrome IE Firefox Safari Opera
try/catch/finally Tuki Tuki Tuki Tuki Tuki

Liittyvät sivut

JavaScript-opas:JavaScriptin virheet

JavaScriptin viittausoppikirja:JavaScriptin throw-lause