JavaScript попробуй... поймай... наконец
Пример
В этом примере есть опечатка в блоке try . Оповещение написано с ошибкой.
Блок catch перехватывает ошибку и выполняет код для ее обработки:
<p id="demo"></p>
<script>
try {
adddlert("Welcome guest!");
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
</script>
Ниже приведены дополнительные примеры.
Определение и использование
При возникновении ошибки JavaScript останавливается и генерирует сообщение об ошибке.
Примечание
Технический термин для этого: JavaScript генерирует исключение .
JavaScript создает объект Error с двумя свойствами: name и message .
Комбинация try...catch...finally
операторов обрабатывает ошибки, не останавливая JavaScript.
Оператор try
определяет блок кода для запуска (чтобы попробовать).
Оператор catch
определяет блок кода для обработки любой ошибки.
Оператор finally
определяет блок кода, который будет выполняться независимо от результата.
Оператор throw
определяет пользовательскую ошибку.
Оба catch
и finally
являются необязательными, но вы должны использовать один из них.
Примечание
Использование throw с try и catch позволяет управлять потоком программы и генерировать собственные сообщения об ошибках.
Смотрите также:
Синтаксис
try {
tryCode - Code block to run
}
catch(err) {
catchCode -
Code block to handle errors
}
finally {
finallyCode - Code block to be executed regardless of the try result
}
Параметры
Parameter | Description |
tryCode | Required. Code block to be tested while executing. |
err | A local reference to the error object. |
catchCode | Optional. Code block to execute if an error occurs. |
finallyCode | Optional. Code block to execute regardless of the try result |
Дополнительные примеры
В этом примере проверяется ввод.
Если значение неверно, генерируется исключение (ошибка):
<p>Please input a number between
5 and 10:</p>
<input id="demo" type="text">
<button type="button"
onclick="myFunction()">Test Input</button>
<p id="message"></p>
<script>
function myFunction() {
const message =
document.getElementById("message");
message.innerHTML = "";
let 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>
Оператор finally выполняет код независимо от результата попытки:
function myFunction()
const message =
document.getElementById("message");
message.innerHTML = "";
let x =
document.getElementById("demo").value;
try {
if(x == "") throw "Empty";
if(isNaN(x))
throw "Not a number";
if(x >
10) throw "Too high";
if(x <
5) throw "Too low";
}
catch(err)
{
message.innerHTML = "Error: " +
err + ".";
}
finally {
document.getElementById("demo").value = "";
}
}
Поддержка браузера
try...catch
является функцией ECMAScript3 (ES3).
ES3 (JavaScript 1999) полностью поддерживается во всех браузерах:
Chrome | IE | Edge | Firefox | Safari | Opera |
Yes | Yes | Yes | Yes | Yes | Yes |