Wyrażenie try/catch/finally w JavaScript

Definicja i użycie

Wyrażenie try/catch/finally obsługuje częściowe lub całe błędy, które mogą wystąpić w bloku kodu, jednocześnie pozwalając na kontynuowanie wykonywania kodu.

Błędy mogą być spowodowane przez błędy w kodzie programisty, błędne wejścia oraz inne nieprzewidywalne sytuacje.

Wyrażenie try pozwala na zdefiniowanie bloku kodu, który ma być przetestowany na błędy w trakcie wykonywania.

Jeśli w bloku try wystąpi błąd, zdanie catch pozwala na zdefiniowanie bloku kodu do wykonania.

Zdanie finally pozwala na wykonanie kodu po try i catch, niezależnie od wyniku.

Komentarz:Zdania catch i finally są opcjonalne, ale w użyciu polecenia try należy użyć jednego z nich (jeśli nie używasz obu jednocześnie).

Wskazówka:W przypadku wystąpienia błędu, JavaScript zazwyczaj zatrzymuje się i generuje komunikat o błędzie. Użyj polecenia throw, aby utworzyć niestandardowe błędy (wyrzucić wyjątek). Jeśli użyjesz throw z try i catch, możesz kontrolować przepływ programu i generować niestandardowe komunikaty o błędach.

Aby uzyskać więcej informacji o błędach JavaScript, przejdź do tutoriala o błędach JavaScript.

Przykład

W tym przykładzie, w kodzie (w bloku try) zrobiliśmy błąd w pisowni.

Ten przykład powinien wyświetlić "Welcome guest!", ale wystąpił błąd w pisowni alert.

Blok catch będzie łapał błędy i wykonywał kod do ich obsługi:

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

spróbuj sam

Poniżej znajduje się więcej przykładów TIY.

Gramatyka

try {
  tryCode - Blok kodu do próby
}
catch(err) {
  catchCode - Blok kodu do obsługi błędów
} 
finally {
  finallyCode - Blok kodu do wykonania niezależnie od wyniku try / catch
}

Wartość parametru

Parametr Opis
tryCode Wymagane. Blok kodu do testowania błędu w trakcie wykonywania.
err Wymagane, jeśli używane z catch. Określa lokalną zmienną odnoszącą się do błędu. Zmienna może odnosić się do obiektu Error (zawierającego informacje o wystąpieniu błędu, na przykład wiadomość "'addlert' is not defined"). Jeśli wyjątek został utworzony za pomocą polecenia throw, zmienna odnosi się do obiektu określonego w poleceniu throw (zobacz "Więcej przykładów").
catchCode Opcjonalne. Blok kodu do wykonania w przypadku wystąpienia błędu w bloku try. Jeśli nie wystąpi błąd, ten blok kodu nigdy nie zostanie wykonany.
finallyCode Opcjonalne. Blok kodu do wykonania niezależnie od wyniku try / catch.

Szczegóły techniczne

Wersja JavaScript: ECMAScript 3

Więcej przykładów

Przykład

Ten przykład sprawdza wprowadzenie. Jeśli wartość jest błędna, rzuca wyjątek (err).

catch pozwala na przechwycenie wyjątków (err) i wyświetlenie niestandardowych komunikatów błędów:

<!DOCTYPE html>
<html>
<body>
<p>Proszę wprowadź liczbę między 5 a 10:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Wprowadzenia</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 "Pusty";
    if(isNaN(x)) throw "Nie liczba";
    if(x > 10) throw "Za wysokie";
    if(x < 5) throw "Za niskie";
  }
  catch(err) {
    message.innerHTML = "Wprowadzenie " + err;
  }
}
</script>
</body>
</html>

spróbuj sam

Przykład

finally zapis pozwala na wykonanie kodu po try i catch, niezależnie od wyniku:

function myFunction()
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "Pusty";
    if(isNaN(x)) throw "Nie liczba";
    if(x > 10) throw "Za wysokie";
    if(x < 5) throw "Za niskie";
  }
  catch(err) {
    message.innerHTML = "Błąd: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}

spróbuj sam

obsługiwany przez przeglądarkę

zwykły Chrome IE Firefox Safari Opera
try/catch/finally Wsparcie Wsparcie Wsparcie Wsparcie Wsparcie

Strony związane

Kurs JavaScript:Błędy JavaScript

Podręcznik JavaScript:Złożenie throw w JavaScript