Слайд 2Ошибки
Грамотная стратегия обработки ошибок должна информировать пользователей о том, что происходит, не
![Ошибки Грамотная стратегия обработки ошибок должна информировать пользователей о том, что происходит,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-1.jpg)
отпугивая их, но для реализации такой процедуры нужно уметь применять разные способы обработки jаvаSсriрt-ошибок по мере их возникновения.
Слайд 3Ошибки
Они могут возникать из-за наших промахов, неожиданного ввода пользователя, неправильного ответа сервера
![Ошибки Они могут возникать из-за наших промахов, неожиданного ввода пользователя, неправильного ответа](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-2.jpg)
и по тысяче других причин.
Обычно скрипт в случае ошибки «падает» (сразу же останавливается), с выводом ошибки в консоль.
Слайд 4try … catch
В третьей редакции ЕСМА-262 для обработки исключений в JavaScript была
![try … catch В третьей редакции ЕСМА-262 для обработки исключений в JavaScript](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-3.jpg)
представлена инструкция try-catch
try {
// код, который может привести к ошибке
} catch (error) {
// действия при возникновении ошибки
}
Слайд 5try … catch
Любой код, который может привести к ошибке, следует помещать в
![try … catch Любой код, который может привести к ошибке, следует помещать](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-4.jpg)
раздел try, а код обработки ошибки - в раздел catch
Если в разделе try происходит ошибка, выполнение кода немедленно прекращается и возобновляется с раздела catch, в который передается объект со сведениями об ошибке.
Слайд 6try … catch
Когда возникает ошибка, JavaScript генерирует объект, содержащий её детали. Затем
![try … catch Когда возникает ошибка, JavaScript генерирует объект, содержащий её детали.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-5.jpg)
этот объект передаётся как аргумент в блок catch
name (Имя ошибки. Например, для неопределённой переменной это "ReferenceError".)
message (Текстовое сообщение о деталях ошибки.)
Слайд 7try … catch
try {
global.someNotExistentFunction();
}
catch (error) {
console.log(error.message);
}
![try … catch try { global.someNotExistentFunction(); } catch (error) { console.log(error.message); }](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-6.jpg)
Слайд 8try … catch - finally
Необязательное предложение finally инструкции try-catch выполняется после нее
![try … catch - finally Необязательное предложение finally инструкции try-catch выполняется после](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-7.jpg)
в любом случае независимо от того, возникла ли ошибка. Ничто в разделе try или catch, даже инструкция return, не может предотвратить выполнение кода в разделе finally.
Слайд 9try … catch
Если ошибка возникает в инструкции try-catch, браузер не уведомляет о
![try … catch Если ошибка возникает в инструкции try-catch, браузер не уведомляет](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-8.jpg)
ней, потому что считает, что она обрабатывается должным образом. Это идеально подходит для веб-приложений, ориентированных на пользователей без технической подготовки, которым не имеет смысла сообщать об ошибках. С помощью try-catch можно реализовать собственный механизм обработки ошибок конкретных типов.
Слайд 10Задача 1
Создать блок обработки ошибок - при вызове несуществующей функции показывать пользователю
![Задача 1 Создать блок обработки ошибок - при вызове несуществующей функции показывать](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-9.jpg)
ошибку на экране “что-то пошло не так”
Слайд 11 Типы ошибок
JavaScript-oшибки делятся на несколько категорий, каждой из которых соответствует особый
![Типы ошибок JavaScript-oшибки делятся на несколько категорий, каждой из которых соответствует особый](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-10.jpg)
объект, генерируемый при ошибке. В ЕСМА-262 определены семь типов ошибок:
Error;
EvalError - ошибка, возникающая в глобальной функции;
RangeError - ошибка, возникающую при выходе числовой переменной или параметра за пределы допустимого диапазона;
ReferenceError - ошибка, возникающая при разыменовывании недопустимой ссылки;
SyntaxError - ошибка, возникающая при разборе исходного кода в функции eval();
TypeError - ошибка, возникающая при недопустимом типе для переменной или параметра;
URIError - ошибку, возникающую при передаче в функции encodeURI() или decodeURI() недопустимых параметров.
Слайд 12 Типы ошибок
Тип Error - это базовый тип, от которого наследуются все
![Типы ошибок Тип Error - это базовый тип, от которого наследуются все](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-11.jpg)
остальные типы ошибок. Таким образом, все они имеют набор общих свойств
Слайд 13 Оператор «throw»
Инструкцию try-catch дополняет оператор throw, с помощью которого в любое
![Оператор «throw» Инструкцию try-catch дополняет оператор throw, с помощью которого в любое](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-12.jpg)
время можно сгенерировать собственную ошибку. Он применяется со значением, но не налагает никаких ограничений на тип значения.
throw 12345;
throw "Hello world!";
throw true;
throw { name: "JavaScript"};
Слайд 14 Оператор «throw»
Оператор throw немедленно останавливает выполнение кода, которое возобновляется только в
![Оператор «throw» Оператор throw немедленно останавливает выполнение кода, которое возобновляется только в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-13.jpg)
том случае, если инструкция try-catch перехватывает сгенерированное им значение.
Ошибки браузера можно имитировать, используя один из встроенных типов. Конструктор каждого типа ошибки принимает как единственный аргумент сообщение об ошибке, например:
throw new Error("Something bad happened . " ) ;
Слайд 15Задача 2
Создайте метод find_index(arr, value), который принимает список(массив значений) и значение. Если
![Задача 2 Создайте метод find_index(arr, value), который принимает список(массив значений) и значение.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-14.jpg)
значение не найдено в списке нужно сгенерировать ошибку.
Слайд 16Вывод сообщений на консоль
error(cooбщeнue) - выводит на консоль сообщение об ошибке;
info(cooбщeнue) -
![Вывод сообщений на консоль error(cooбщeнue) - выводит на консоль сообщение об ошибке;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-15.jpg)
выводит на консоль информационное сообщение;
lоg(сообщенuе) - выводит на консоль сообщение общего характера;
warn(cooбщeнue) - выводит на консоль предупреждение.
Слайд 17Задача 3
Функция для оценки строки: вы должны проверить любой код HTML (т.
![Задача 3 Функция для оценки строки: вы должны проверить любой код HTML](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/904303/slide-16.jpg)
Е. какие-либо теги HTML), если какой-либо код найден, вы должны вернуть false, если входные данные не являются строкой, вы должны выбросить ошибку TypeError. Если длина строки превышает 255 символов или содержит 0 символов, вы должны бросить RangeError и, наконец, если введенная строка пуста, выведите ReferenceError.
используйте regex = /(<([^>]+)>)/ig и метод test()