JavaScript try/catch/finally
Пример
В этом примере мы сделали опечатку в коде (в блоке try).
Предполагается, что этот пример предупреждает "Добро пожаловать гость!", но alert написан с ошибкой.
Блок catch ловит ошибку и выполняет код для ее обработки:
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
try {
adddlert("Добро пожаловать гость!");
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
</script>
</body>
</html>
Попробуйте сами »
Больше примеров "Попробуйте сами" ниже.
Определение и использование
Оператор try/catch/finally обрабатывает некоторые или все ошибки, которые могут возникнуть в блоке кода во время выполнения кода.
Ошибки могут быть ошибками кодирования, сделанными программистом, ошибками из-за неправильного ввода и другими непредвиденными вещами.
Оператор try позволяет определить блок кода, который будет проверяться на наличие ошибок во время его выполнения.
Оператор catch позволяет определить блок кода, который будет выполняться, если в блоке try возникнет ошибка.
Оператор finally позволяет выполнять код после try и catch независимо от результата.
Примечание: Операторы catch и finally являются необязательными, но вам нужно использовать один из них (если не оба) при использовании оператора try.
Совет: При возникновении ошибки JavaScript обычно останавливается и генерирует сообщение об ошибке. Использовать оператор throw для создания пользовательской ошибки (выбросить исключение). Если вы используете throw вместе с try и catch, вы можете управлять потоком программы и генерировать пользовательские сообщения об ошибках.
Для получения дополнительной информации об ошибках JavaScript прочтите учебник JavaScript Ошибка.
Поддержка браузера
Заявление | |||||
---|---|---|---|---|---|
try/catch/finally | Да | Да | Да | Да | Да |
Синтаксис
try {
tryCode - Блок кода, чтобы попробовать
}
catch(err) {
catchCode - Блок кода для обработки ошибок
}
finally {
finallyCode - Блок кода, который должен быть выполнен независимо от try/catch результата}
Значения параметров
Параметр | Описание |
---|---|
tryCode | Требуемый. Блок кода, подлежащий проверке на наличие ошибок во время его выполнения |
err | Требуется, если используется с уловом. Указывает локальную переменную, которая ссылается на ошибку. Переменная может ссылаться на объект Error (содержит информацию о возникшей ошибке, например сообщение "add alert" не определено"). Если исключение было создано оператором throw, переменная ссылается на объект, указанный в операторе throw (см. "Еще примеры") |
catchCode | Необязательный. Блок кода, который будет выполнен, если в блоке try возникнет ошибка. Если ошибка не возникает, этот блок кода никогда не выполняется |
finallyCode | Необязательный. Блок кода, который будет выполняться независимо от результата try/catch |
Технические детали
Версия JavaScript: | ECMAScript 3 |
---|
Еще примеры
Пример
В этом примере рассматриваются входные данные. Если значение неверно, возникает исключение (ошибка).
Исключение (ошибка) перехватывается оператором catch и отображается пользовательское сообщение об ошибке:
<!DOCTYPE html>
<html>
<body>
<p>Пожалуйста, введите число между
5 и 10:</p>
<input id="demo" type="text">
<button type="button"
onclick="myFunction()">Тестовый ввод</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 "пусто";
if(isNaN(x)) throw "не число";
if(x > 10) throw "слишком высоко";
if(x < 5) throw "слишком низко";
}
catch(err) {
message.innerHTML =
"Ввод " + err;
}
}
</script>
</body>
</html>
Попробуйте сами »
Пример
Оператор finally позволяет выполнять код после try и catch независимо от результата:
function myFunction()
var message, x;
message =
document.getElementById("message");
message.innerHTML = "";
x =
document.getElementById("demo").value;
try {
if(x == "") throw "пусто";
if(isNaN(x))
throw "не число";
if(x >
10) throw "слишком высоко";
if(x <
5) throw "слишком низко";
}
catch(err)
{
message.innerHTML = "Ошибка: " +
err + ".";
}
finally {
document.getElementById("demo").value = "";
}
}
Попробуйте сами »
Связанные страницы
JavaScript учебник: JavaScript Ошибка
JavaScript справочник: JavaScript Заявление throw