dr.Brain

doctor Brain

мир глазами веб-разработчика

JavaScript: что поймает catch

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

dr.Brain

время чтения 2 мин.

Photo by Robert Thiemann on Unsplash

Итак, у нас есть две переменных и 2 блока try/catch, которые отлавливают ошибки и помещают их в указанные переменные e1 и e2. Далее сообщения об ошибках подвергаются анализу, частичному сравнению и результат сравнения выводится на экран.

Код поставленной задачи имеет следующий вид:

let e1, e2;

try {
    console.log(null.length);
} catch(e) {
    e1 = e;
}

try {
    console.log(undefined.length);
} catch(e) {
    e2 = e;
}

console.log(e1.message.split(' ')[0] === e2.message.split(' ')[0]);

В первую очередь выясним, что попадает в переменные e1 и e2. Для этого нужно изучить содержимое каждого блока try. Мы видим, что null.length и undefined.length возвращают ошибки, так как ни null ни undefined не имеют свойства length. Полученные сообщения об ошибках попадут в соответствующие блоки catch в составе перменной e. Далее, сообщение об ошибке для null.length будет передано в переменную e1, а сообщение об ошибке для undefined.length будет передано в переменную e2.

Полный состав сообщений об ошибках будет отличаться. В этом легко убедиться выполнив в консоли соответствующие команды:

console.log(e1);
// Cannot read property 'length' of null

console.log(e2);
// Cannot read property 'length' of undefined

Но, благодаря .split(' ')[0], мы сравниваем только первые слова каждого сообщения об ошибке, в обоих случаях первым словом будет Cannot. Таким образом, конечный вид сравнения будет иметь вид:

console.log('Cannot' === 'Cannot')

Нетрудно догадаться, что в результате на экране конслои мы увидим true.


Спасибо за внимание.

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.