САМОСТОЯТЕЛЬНОЕ ОБУЧЕНИЕ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ
×

JS Учебник

JS Главная JS Введение JS Что? Где? Куда? JS Вывод JS Заявления JS Синтаксис JS Комментарии JS Переменные JS Операторы JS Арифметика JS Присваивания JS Типы данных JS Функции JS Объекты JS События JS Строки JS Методы строк JS Числа JS Методы чисел JS Массивы JS Методы массива JS Сортировка массива JS Итерация массива JS Объекты дат JS Формат дат JS Метод получения дат JS Метод набора дат JS Математические... JS Случайные числа JS Булевы JS Сравнение... JS Заявления if...else JS Заявление switch JS Цикл for JS Цикл while JS Заявление break... JS Преобразование... JS Битовые... JS Регулярные выражения JS Ошибки JS Область JS Подъемный JS Строгий JS Ключевое слово this JS Ключевое слово let JS Константы JS Функция стрелки JS Классы JS Отладчик JS Руководство стиля JS Практика JS Распространенные ошибки JS Эффективность JS Зарезервированные слова JS Версии JS Версия ES5 JS Версия ES6 JS Версия 2016 JS Версия 2017 JS JSON

JS Формы

JS Формы JS Формы API

JS Объекты

Определение объекта Свойства объекта Методы объекта Отображение объекта Доступ к объекту Конструкторы объекта Прототипы объекта ES5 Методы объекта

JS Функции

Определение функции Параметры функции Вызов функции Вызвать функцию Применение функции Закрытие функции

JS Прочее

Классы введение Наследование класса Статические методы... JS Обратный вызов JS Асинхронный JS Обещания JS Асинхронный синтаксис

JS HTML DOM

DOM Введение DOM Методы DOM Документы DOM Элементы DOM HTML DOM CSS DOM Анимация DOM События DOM Прослушиватель событий DOM Навигация DOM Узлы DOM Коллекция DOM Список узлов

JS Браузера BOM

JS Window JS Экран JS Расположение JS История JS Навигатор JS Предупреждение JS Синхронизация JS Cookies

JS AJAX

AJAX Введение AJAX XMLHttp AJAX Запрос на сервер AJAX Ответ с сервера AJAX XML Файл AJAX PHP Файл AJAX ASP Файл AJAX База данных AJAX Приложения AJAX Примеры

JS JSON

JSON Введение JSON Синтаксис JSON или XML JSON Типы данных JSON Парсинг JSON Строки JSON Объекты JSON Массивы JSON PHP JSON HTML JSON JSONP

JS Веб API

API - Введение API - История API - Хранилище API - Работник API - Извлечь файл API - Геолокации

JS или jQuery

jQuery HTML Селекторы jQuery HTML Элементы jQuery CSS Стили jQuery HTML DOM

JS Примеры

JS Примеры JS HTML DOM JS HTML Ввода JS HTML Объекты JS HTML События JS Браузер JS Редактор JS Упражнения JS Викторина JS Сертификат

JS Справочник

JavaScript Объекты HTML DOM Объекты


На сайте нет рекламы

JavaScript Ошибки - брось и попробуй поймать



Это try заявление позволяет вам проверить блок кода на наличие ошибок.

Это catch заявление позволяет вам обработать ошибку.

Это throw заявление позволяет создавать собственные ошибки.

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


Ошибки будут!

При выполнении кода JavaScript могут возникать разные ошибки.

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

Пример

В этом примере мы написали alert как adddlert, чтобы намеренно выдать ошибку:

<p id="demo"></p>

<script>
try {
  adddlert("Welcome guest!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>
Попробуйте сами »

JavaScript перехватывает adddlert как ошибку и выполняет код перехвата для ее обработки.


JavaScript попытаться поймать

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

Заявление catch позволяет определить блок кода, который будет выполняться, если ошибка происходит в блоке.

Заявление JavaScript try и catch бывают парами:

try {
  блок кода для попытки
}
catch(err) {
  блок кода для обработки ошибок
}


JavaScript выдает ошибки

При возникновении ошибки JavaScript обычно останавливается и генерирует сообщение об ошибке.

Технический термин для этого: JavaScript вызовет исключение (выдаст ошибку).

JavaScript фактически создаст объект Error с двумя свойствами: именем и сообщением.


Заявление throw

Заявление throw позволяет создать пользовательскую ошибку.

Технически вы можете создать исключение (выдать ошибку).

Исключением может быть JavaScript String, Number, Boolean или Object:

throw "Too big";    // бросаем текст
throw 500;          // бросаем число

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


Пример проверки ввода

В этом примере исследуется ввод. Если значение неверно, генерируется исключение (ошибка).

Исключение (err) перехватывается заявлением catch, и отображается настраиваемое сообщение об ошибке:

<!DOCTYPE html>
<html>
<body>

<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="p01"></p>

<script>
function myFunction() {
  var message, x;
  message = document.getElementById("p01");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try {
    if(x == "") throw "empty";
    if(isNaN(x)) throw "not a number";
    x = Number(x);
    if(x < 5) throw "too low";
    if(x > 10) throw "too high";
  }
  catch(err) {
    message.innerHTML = "Input is " + err;
  }
}
</script>

</body>
</html>
Попробуйте сами »

Проверка HTML

Код выше - всего лишь пример.

Современные браузеры часто используют комбинацию JavaScript и встроенной проверки HTML, используя предопределенные правила проверки, определенные в атрибутах HTML:

<input id="demo" type="number" min="5" max="10" step="1">

Вы можете узнать больше о проверке форм в следующей главе этого руководства.


Заявление finally

Заявление finally позволяет выполнить код, после того, как попытаться поймать, независимо от результата:

Синтаксис

try {
  блок кода для попытки
}
catch(err) {
  блок кода для обработки ошибок
}
finally {
  блок кода, который будет выполняться независимо от результата try/catch result
}

Пример

function myFunction() {
  var message, x;
  message = document.getElementById("p01");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try {
    if(x == "") throw "is empty";
    if(isNaN(x)) throw "is not a number";
    x = Number(x);
    if(x > 10) throw "is too high";
    if(x < 5) throw "is too low";
  }
  catch(err) {
    message.innerHTML = "Error: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}
Попробуйте сами »

Объект Error

JavaScript имеет встроенный объект Error, который предоставляет информацию об ошибке при возникновении ошибки.

Объект Error предоставляет два полезных свойства: имя и сообщение.


Свойства объекта Error

СвойствоОписание
имяЗадает или возвращает имя ошибки
сообщениеУстанавливает или возвращает сообщение об ошибке (строку)

Значения имени ошибки

Свойство имени ошибки может вернуть шесть различных значений:

Имя ошибкиОписание
EvalErrorПроизошла ошибка в функции eval()
RangeErrorПроизошло число "вне допустимого диапазона"
ReferenceError Произошла недопустимая ссылка
SyntaxErrorПроизошла синтаксическая ошибка
TypeErrorПроизошла ошибка типа
URIErrorПроизошла ошибка в encodeURI()

Ниже описаны шесть различных значений.


Ошибка Eval

Один EvalError указывает на ошибку в функции eval().

Новые версии JavaScript не генерируют EvalError. Вместо этого используйте SyntaxError.


Ошибка Range

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

Например: нельзя установить количество значащих цифр числа на 500.

Пример

var num = 1;
try {
  num.toPrecision(500);   // Число не может содержать 500 значащих цифр
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}
Попробуйте сами »

Ошибка Reference

Ошибка ReferenceError выбрасывается, если вы используете (reference) переменную, которая не была объявлена:

Пример

var x;
try {
  x = y + 1;   // y нельзя referenced (использовать)
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}
Попробуйте сами »

Ошибка Syntax

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

Пример

try {
  eval("alert('Hello)");   // Отсутствует 'вызовет ошибку
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}
Попробуйте сами »

Ошибка Type

Ошибка TypeError выбрасывается, если вы используете значение, которое находится за пределами диапазона ожидаемых типов:

Пример

var num = 1;
try {
  num.toUpperCase();   // Вы не можете преобразовать число в верхний регистр
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}
Попробуйте сами »

Ошибка URI (унифицированного идентификатора ресурса)

Ошибка URIError выбрасывается, если вы используете недопустимые символы в функции URI:

Пример

try {
  decodeURI("%%%");   // Вы не можете декодировать знаки процента URI
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}
Попробуйте сами »

Нестандартные свойства объекта ошибки

Mozilla и Microsoft определяют некоторые нестандартные свойства объекта ошибки:

fileName (Mozilla)
lineNumber (Mozilla)
columnNumber (Mozilla)
stack (Mozilla)
description (Microsoft)
number (Microsoft)

Не используйте эти свойства на общедоступных веб-сайтах. Они не будут работать во всех браузерах.


Полный справочник ошибок

Чтобы получить полную информацию об объекте Error, перейдите в Полный справочник ошибок JavaScript ..