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

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 Сравнение... JS Заявления if...else JS Заявление switch JS Цикл for JS Цикл while JS Заявление break... JS Преобразование... JS Битовые... JS Регулярные выражения JS Ошибки JS Отладчик JS Подъемный JS Строгий JS Ключевое слово this JS Руководство стиля JS Практика JS Распространенные ошибки JS Эффективность JS Зарезервированные слова JS Версии JS Версия ES5 JS Версия ES6 JS JSON

JS Формы

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

JS Объекты

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

JS Функции

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

JS HTML DOM

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

JS Браузера BOM

JS Окно 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 или jQuery

jQuery Селекторы jQuery HTML jQuery CSS jQuery DOM

JS Примеры

JS Примеры JS HTML DOM JS HTML Ввод


JavaScript Ошибки - Throw и Try в Catch



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

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

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

Заявление finally позволяет выполнять код после try и catch, независимо от результата.


Случаются ошибки!

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

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

Пример

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

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

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

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


JavaScript try и catch

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

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

JavaScript заявления try и catch приходят парами:

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


Warning: include(../includes/advertising2.php): failed to open stream: No such file or directory in /var/www/u0396568/data/www/schoolsw3.com/js/js_errors.php on line 56

Warning: include(../includes/advertising2.php): failed to open stream: No such file or directory in /var/www/u0396568/data/www/schoolsw3.com/js/js_errors.php on line 56

Warning: include(): Failed opening '../includes/advertising2.php' for inclusion (include_path='.:') in /var/www/u0396568/data/www/schoolsw3.com/js/js_errors.php on line 56

JavaScript выбросить ошибки

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

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

JavaScript фактически создаст объект error с двумя свойствами: name и message.


Заявление throw

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

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

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

throw "Слишком большой";    // сбросить текст
throw 500;          // сбросить номер

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


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

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

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

<!DOCTYPE html>
<html>
<body>

<p>Пожалуйста, введите число между 5 и 10:</p>

<input id="demo" type="text">
<button type="button" onclick="myFunction()">Вывод текста</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 "пусто";
        if(isNaN(x)) throw "не число";
        x = Number(x);
        if(x < 5) throw "слишком маленькое число";
        if(x > 10) throw "слишком большое число";
    }
    catch(err) {
        message.innerHTML = "Вывод " + err;
    }
}
</script>

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

HTML Корректность

Приведенный выше код является лишь примером.

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

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

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


Последнее заявление

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

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

Пример

function myFunction() {
    var message, x;
    message = document.getElementById("p01");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try {
        if(x == "") throw "пусто";
        if(isNaN(x)) throw "не число";
        x = Number(x);
        if(x > 10) throw "слишком большое число";
        if(x < 5) throw "слишком маленькое число";
    }
    catch(err) {
        message.innerHTML = "Ошибка: " + err + ".";
    }
    finally {
        document.getElementById("demo").value = "";
    }
}
Попробуйте сами »

Объект error

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

Объект error предоставляет два полезных свойства: name и message.


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

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

Названий ошибок значений

Шесть разных значений могут быть возвращены по названию ошибки свойств:

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

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


Ошибка оценки

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

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


Ошибка диапазона

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

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

Пример

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

Ошибка cсылки

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

Пример

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

Cинтаксическая ошибка

SyntaxError

Пример

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

Ошибка типа

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)

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