FCAC5D91 Полезности для frontend developer, шуточки, вакансии и многое другое Реклама http://telegra.ph/Reklama-07-28 Отзывы от реккламодателей @progeri_reviews Администрация/Реклама @vtopua
1 090подписчиков сейчас
73.0%ERR
4.0цитируемость
18постов/день
Русскийязык
Россиягео
Подписаться в Telegram
Данные обновлены 22.07.2020
Публикации всего: 83
Перехват исключений во вложенном коде в JavaScript
Особенность и удобство исключений заключаются в том, что их можно ловить при любом уровне вложенности кода. Посмотрим на примере. Пусть у нас есть функция, сохраняющая данные в локальное хранилище:
function save(str) {
localStorage.setItem('key',
str);
}
📌 #instr || Фронтендщик
Если же при выполнении блока try никаких исключительных ситуаций не случилось, то полезный код просто выполнится, а код из блока catch - нет.
Для примера давайте попробуем разобрать JSON и в случае его некорректности выведем на экран сообщение об этом:
try {
let data = JSON.parse('{1,2,3,4,5}');
} catch (error) {
alert('невозможно выполнить
операцию разбора
JSON');
}
📌 #instr || Фронтендщик
В блоке try следует размещать код, который может содержать исключение. Если вдруг при выполнении этого кода возникнет исключительная ситуация, то наш скрипт не рухнет с ошибкой в консоли, а начнет выполнятся код блока catch.
В этом блоке мы должны каким-то адекватным образом отреагировать на ошибку. Например, если мы хотели отправить какие-то данные через интернет и интернет не работает, в блоке catch мы можем как-то справится с ситуацией: можно, например, выдать сообщение пользователю, а можно через некоторое время попытаться отправить данные опять - вдруг интернет уже заработал.
📌 #instr || Фронтендщик
Перехват исключений в JavaScript
Для перехвата исключений используется конструкция try-catch. Она имеет следующий синтаксис:
try {
// код
} catch (error) {
// обработка ошибки
}
📌 #instr || Фронтендщик
Как JavaScript реагирует на такие исключительные ситуации? Он просто вываливает ошибку в консоль и прекращает дальнейшее выполнение скрипта.
Наша задача, как программистов, состоит в том, чтобы отловить такую ситуацию и как-то справится с ней, не давая программе совсем прекратить свое выполнение. Для этого существуют специальные конструкция try-catch, которую мы разберем в следующих уроках.
📌 #instr || Фронтендщик
А второе исключение возникает, когда локальное хранилище, выделенное под наш сайт переполняется (больше 5 мегабайт).
Давайте искусственно вызовем такое исключение:
let str = '';
for (let i = 1; i <= 6 * 10 ** 6; i++) { // формируем строку более 5 мб
str += '+';
}
localStorage.setItem('key',
str); // пытаемся записать в
хранилище
📌 #instr || Фронтендщик
Однако, исключительные ситуации есть. Мы разберем две самые простые и на их примере изучим работу с исключениями в JavaScript.
Первое исключение возникает, когда мы хотим разобрать некорректный JSON:
let data = JSON.parse('{1,2,3,4,5}');
// данный
json некорректен
📌 #instr || Фронтендщик
Виды возникающих ситуаций в JavaScript
В JavaScript очень мало ситуаций, в которых возникают исключения. Во-первых, просто потому, что очень мало мест для их возникновения.
Во-вторых, потому, что сам язык "всепрощающий": он на многое смотрит сквозь пальцы, например, на деление на ноль или на некорректный HTML код. Даже если вы укажете неверный путь к картинке, которую собираетесь загрузить, JavaScript вам простит и это и не посчитает исключением.
📌 #instr || Фронтендщик
Программа, тем не менее, может продолжить свое выполнение: она может вывести информацию о проблеме, повторить попытку отправки через некоторое время, и так далее. Но эти действия уже не совсем то, для чего программа была предназначена, так как основное действие - отправка email программа сделать не сможет.
Очень часто то, исключительная ситуация или нет, зависит от языка программирования. Во многих языках, если вдруг произошло деление на ноль - это считается исключением (так как на ноль делить нельзя), но в JavaScript - не считается (в JavaScript на ноль делить можно).
📌 #instr || Фронтендщик
Например, у нас есть программа, которая должна спросить email пользователя. Если пользователь ввел email в некорректном формате - это не сбой. Это ожидаемая проблема и наша программа будет спрашивать у пользователя email столько раз, пока он не введет его корректно.
Пусть наша программа, которая спрашивает email, должна также отправить этот корректный email через интернет. При этом оказывается, что интернет не работает. Вот это уже проблема: программа никак не сможет отправить данные через интернет, если интернет не работает.
📌 #instr || Фронтендщик
Архитектурные излишества
Строительство и бизнес
Adobe Photoshop | Graphic Design | Фотошоп
Бесплатные шрифты
Дайджест продуктового дизайна
Умный дом