JavaScript Ошибки - throw, try и catch


tryОператор проверяет блок кода на наличие ошибок.

catchОператор обрабатывает ошибки.

throwОператор создаёт пользовательские ошибки.

finallyОператор выполняется после операторов try и catch, независимо от того, было ли вызвано исключение.


Ошибки JavaScript

Когда движок JavaScript выполняет код JavaScript, могут возникать различные ошибки.

Это могут быть синтаксические ошибки, обычно ошибки в коде или опечатки, допущенные программистами.

Это могут быть орфографические ошибки или отсутствующие возможности языка (возможно, из-за различий браузеров).

Это могут быть ошибки, вызванные неправильным выводом сервера или пользователя.

Конечно, они также могут быть вызваны множеством других непредсказуемых факторов.


JavaScript: Выброс ошибок (throw)

Когда возникает ошибка, когда что-то идёт не так, движок JavaScript обычно останавливается и генерирует сообщение об ошибке.

Технический термин для этой ситуации: JavaScript будетthrowошибку.


JavaScript: try и catch

tryОператор позволяет нам определить блок кода, который проверяется на ошибки во время выполнения.

catchОператор позволяет нам определить блок кода, который должен выполняться, когда в блоке try возникает ошибка.

Инструкции JavaScripttryиcatchидут парами.

Синтаксис

try { ... //Выброс исключения } catch(e) { ... //Перехват и обработка исключения } finally { ... //Финализация }

Пример

В следующем примере мы намеренно допустили опечатку в коде блока try.

Блок catch перехватит ошибку в блоке try и выполнит код для её обработки.

Пример

var txt=""; function message() { try { adddlert("Добро пожаловать, гость!"); } catch(err) { txt="На этой странице произошла ошибка.\n\n"; txt+="Описание ошибки:" + err.message + "\n\n"; txt+="Нажмите OK, чтобы продолжить.\n\n"; alert(txt); } }

Попробуйте сами »

Инструкция finally

Инструкция finally выполняет блок кода независимо от того, произошло ли исключение в предшествующих try и catch.

Пример

function myFunction() { //Получить элемент const messageElement = document.getElementById("p01"); const inputElement = document.getElementById("demo"); //Очистить предыдущее сообщение messageElement.innerHTML = ""; //Получить значение ввода и удалить пробелы const rawValue = inputElement.value.trim(); try { //1. Проверить, пусто ли if (rawValue === "") { throw new Error("Ввод не может быть пустым. Пожалуйста, введите число."); } //2. Проверить, является ли число допустимым if (isNaN(rawValue)) { throw new Error("Пожалуйста, введите допустимое число (например, 5, 10.5, -3)"); } //Преобразовать в число const x = Number(rawValue); //3. Проверить, является ли число целым (можно настроить при необходимости) if (!Number.isInteger(x)) { throw new Error("Пожалуйста, введите целое число (десятичные дроби не поддерживаются)"); } //4. Проверить диапазон чисел (можно настроить при необходимости) if (x > 10) { throw new Error(`Number ${x}слишком большое, пожалуйста, введите5-10число в диапазоне от`); } if (x < 5) { throw new Error(`Number ${x}слишком маленькое, пожалуйста, введите5-10число между`); } //5. Проверьте особый случай отрицательных чисел if (x < 0) { throw new Error("Пожалуйста, введите положительное число (отрицательные числа не поддерживаются)"); } //Все проверки пройдены messageElement.innerHTML= `Проверка пройдена! Введённое вами число: ${x}`; messageElement.style.color = "green"; //При успехе можно выполнить другие операции console.log(`Пользователь ввёл допустимое число: ${x}`); } catch (err) { //Отобразить сообщение об ошибке messageElement.innerHTML= `Ошибка: ${err.message}`; messageElement.style.color = "red"; //Необязательно: вывести ошибку в консоль console.error("Проверка входных данных не пройдена:", err.message); } finally { //Независимо от успеха или неудачи очистите поле ввода inputElement.value = ""; //Необязательно: снова установите фокус на поле ввода, чтобы пользователю было проще ввести данные повторно inputElement.focus(); } }



Оператор throw

Оператор throw позволяет нам создавать пользовательские ошибки.

Правильный технический термин: создать иливыбросить исключение(исключение)。

Если вы используете throw вместе с try и catch, вы можете управлять потоком программы и генерировать пользовательские сообщения об ошибках.

Синтаксис

throw exception

Исключение может быть строкой JavaScript, числом, логическим значением или объектом.

Пример

В этом примере проверяется значение входной переменной. Если значение неверно, выбрасывается исключение (ошибка). 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 "Не число"; x = Number(x); if(x < 5) throw "Слишком маленькое"; if(x > 10) throw "Слишком большое"; } catch(err) { message.innerHTML = "Ошибка:" + err; } }

Попробуйте сами »

Обратите внимание: если функция getElementById завершится неудачно, пример выше также выбросит ошибку.

Другие расширения