JavaScript - Обработка ошибок и исключений

Здравствуйте, будущие маги JavaScript! ? Добро пожаловать в наш увлекательный экскурс в мир обработки ошибок в JavaScript. Как ваш доброжелательный компьютерный учитель, я здесь, чтобы направить вас в этом приключении. Так что пристегнитесь и погружайтесь с нами!

JavaScript - Error Handling

Что такое ошибка?

Представьте, что вы пекете торт ?, и случайно используете соль вместо сахара. Это и есть ошибка! В программировании ошибки такие же - это непредвиденные проблемы, которые возникают при выполнении нашего кода. Это могут быть опечатки, логические ошибки или даже проблемы с данными, с которыми мы работаем.

Вот пример простой ошибки в JavaScript:

console.log(Hello, World!);

Если вы выполните этот код, у вас появится ошибка, потому что мы забыли поставить кавычки вокруг нашего текста. JavaScript ожидает, чтобы строки были в кавычках.

Что такое обработка ошибок?

Обработка ошибок - это как иметь страховочную сетку, когда вы идете по канату. Это способ优雅но управлять ошибками в нашем коде, предотвращая полный крах нашей программы, когда что-то идет не так.

Стatement try...catch...finally

Статмент try...catch...finally - наш основной инструмент для обработки ошибок в JavaScript. Это как тройца супергероев, приходящих на помощь! ?‍♀️?‍♂️?‍♀️

Вот как это работает:

try {
// Код, который может вызвать ошибку
let result = 10 / 0;
console.log(result);
} catch (error) {
// Код для обработки ошибки
console.log("Ой! Произошла ошибка:", error.message);
} finally {
// Код, который всегда выполняется, независимо от ошибок
console.log("Это всегда выполняется!");
}

В этом примере:

  • Блок try содержит код, который может вызвать ошибку (деление на ноль).
  • Если occurs error, блок catch перехватывает его и обрабатывает его优雅но.
  • Блок finally всегда выполняется, независимо от наличия ошибки или нет.

Statement throw

Иногда мы хотим создавать свои собственные пользовательские ошибки. Для этого используется statement throw. Это как быть судьей в игре и назначить фол! ?

Вот пример:

function checkAge(age) {
if (age < 0) {
throw new Error("Возраст не может быть отрицательным!");
}
console.log("Возраст действителен:", age);
}

try {
checkAge(-5);
} catch (error) {
console.log("Перехвачена ошибка:", error.message);
}

В этом коде мы бросаем пользовательскую ошибку, когда кто-то пытается использовать отрицательный возраст. Блок catch затем обрабатывает эту ошибку.

Событие onerror

Событие onerror - это как иметь бдительного хранителя для всего вашего приложения на JavaScript. Оно перехватывает ошибки, occurring anywhere в вашем коде.

Вот как вы можете использовать его:

window.onerror = function(message, source, lineno, colno, error) {
console.log("Произошла ошибка:");
console.log("Сообщение:", message);
console.log("Источник:", source);
console.log("Строка:", lineno);
console.log("Столбец:", colno);
console.log("Объект ошибки:", error);
return true;
};

// Это вызовет обработчик onerror
nonExistentFunction();

Этот код устанавливает глобальный обработчик ошибок, который будет перехватывать любые не перехваченные ошибки в вашем приложении.

Справочник по объекту ошибки JavaScript

JavaScript предоставляет несколько встроенных типов ошибок. Давайте посмотрим на них в удобной таблице:

Тип ошибки Описание
Error Общий тип ошибки
SyntaxError Возникает, когда в коде есть синтаксическая ошибка
ReferenceError Возникает при обращении к несуществующей переменной
TypeError Возникает, когда значение не того типа, который ожидался
RangeError Возникает, когда число выходит за разрешаемый диапазон
URIError Возникает при использовании неправильных функций URI
EvalError Возникает в relation к функции eval()

Вот пример того, как могут возникать эти ошибки:

try {
// SyntaxError
eval("Hello World");

// ReferenceError
console.log(undefinedVariable);

// TypeError
null.f();

// RangeError
let arr = new Array(-1);

// URIError
decodeURIComponent("%");

} catch (error) {
console.log(error.name + ": " + error.message);
}

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

И вот оно, мои дорогие студенты! Мы совершили путешествие по земле обработки ошибок в JavaScript. Помните, ошибки не ваши враги - они ценный отзыв, который помогает вам улучшить ваш код. Принимайте их, учитесь у них, и вскоре вы будете обрабатывать ошибки как профессионал! ?

Продолжайте программировать, продолжайте учиться и не забывайте получать удовольствие на этом пути! До встречи на следующем уроке! ?

Credits: Image by storyset