Операторы try...catch...finally
В этом примере есть опечатка в блоке try, предупреждение написано с ошибкой.
Блок catch перехватывает ошибку и выполняет код для ее обработки:
<p id="demo"></p>
<script>
try {
adddlert("Добро пожаловать!");
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
</script>
Попробуйте сами »
Смотрите примеры ниже.
Описание
При возникновении error JavaScript остановится и выдаст сообщение об ошибке.
Примечание
Технический термин для этого такой: JavaScript выдает исключение.
JavaScript создает объект error с двумя свойствами: name и message.
Комбинация операторов try...catch...finally обрабатывает ошибки без остановки JavaScript.
Оператор try определяет блок кода, который нужно запустить (попробовать).
Оператор catch определяет блок кода для обработки любой ошибки.
Оператор finally определяет блок кода, который будет выполняться независимо от результата.
Оператор throw определяет пользовательскую ошибку.
Операторы catch и finally не являются обязательными, но вы должны использовать один из них.
Примечание
Использование throw с try и catch позволяет управлять ходом программы и генерировать собственные сообщения об ошибках.
См. также:
Синтаксис
try {
tryCode - Блок кода для запуска
}
catch(err) {
catchCode - Блок кода для обработки ошибок
}
finally {
finallyCode - Блок кода, который будет выполнен независимо от результата попытки
}
Параметры
| Параметр | Описание |
|---|---|
| tryCode | Обязательно. Блок кода, который необходимо протестировать во время выполнения. |
| err | Локальная ссылка на объект ошибки. |
| catchCode | Oнеобязательно. Блок кода, который будет выполняться в случае возникновения ошибки. |
| finallyCode | Oнеобязательно. Блок кода, который будет выполняться независимо от результата попытки |
Ещё примеры
Этот пример проверяет входные данные.
Если значение неверно, выдается исключение (err):
<p>Пожалуйста, введите число от 5 до 10:</p>
<input id="demo" type="text">
<button type="button"
onclick="myFunction()">Тестовый ввод</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 "Пусто";
if(isNaN(x)) throw "нет числа";
if(x > 10) throw "слишком много";
if(x < 5) throw "слишком мал";
}
catch(err) {
message.innerHTML =
"Ввод " + err;
}
}
</script>
Попробуйте сами »
Оператор finally выполняет код независимо от результата попытки:
function myFunction()
const message =
document.getElementById("message");
message.innerHTML = "";
let 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 = "Error: " +
err + ".";
}
finally {
document.getElementById("demo").value = "";
}
}
Попробуйте сами »
Поддержка браузера
try...catch — это функция ECMAScript3 (ES3).
ES3 (JavaScript 1999) полностью поддерживается во всех браузерах:
| Chrome | Edge | Firefox | Safari | Opera | IE |
| Да | Да | Да | Да | Да | Да |