Что такое ошибка
Урок: Что такое ошибка
Введение
Когда мы пишем код, почти всегда наступает момент, когда что-то идёт не так. Программа не работает, как ожидалось, появляется сообщение в консоли, или вообще всё «падает».
Представь, что ты собираешь мебель по инструкции. Если перепутать шаги или потерять деталь, результат будет неправильным. Ошибка — это сигнал, что что-то пошло не так.
В программировании ошибки — это не что-то редкое или «плохое». Это нормальная часть процесса разработки. Более того, умение понимать и обрабатывать ошибки — один из ключевых навыков разработчика.
Важно не просто «исправить ошибку», а понять:
- почему она произошла;
- как её избежать;
- как правильно с ней работать.
Что такое ошибка в JavaScript
Ошибка — это ситуация, когда программа не может выполнить код корректно.
Рассмотрим простой пример:
try {
console.log(user.name);
} catch (e) {
console.log('ReferenceError:', e.message);
}
Если переменная user не определена, мы получим ошибку:
ReferenceError: user is not defined
Это означает:
- программа не знает, что такое
user; - выполнение кода остановлено.
Ошибка — это сигнал от JavaScript: «я не могу продолжить выполнение».
Типы ошибок
Ошибки бывают разными, но важно понимать основные категории.
Синтаксические ошибки
Это ошибки в написании кода.
try {
new Function('let = name "Stepan";');
} catch (e) {
console.log('синтаксис не разбирается:', e.name);
}
console.log('правильно было бы: let name = "Stepan";');
Такой код не запустится вообще.
JavaScript даже не сможет начать выполнение, потому что синтаксис нарушен.
Ошибки во время выполнения (runtime)
Это ошибки, которые возникают во время выполнения программы.
try {
let user = null;
console.log(user.name);
} catch (e) {
console.log('TypeError:', e.message);
}
Результат:
TypeError: Cannot read properties of null
Здесь:
- код написан правильно;
- но во время выполнения происходит ошибка.
Логические ошибки
Это самые коварные ошибки — программа работает, но даёт неправильный результат.
let a = 5;
let b = 10;
let result = a - b; // ожидали сложение
console.log(result);
Здесь нет ошибки в консоли, но результат неверный.
Такие ошибки сложнее всего находить.
Как JavaScript обрабатывает ошибки
По умолчанию, если возникает ошибка, программа останавливается.
try {
console.log('Начало');
undefinedFunction();
console.log('Конец');
} catch (e) {
console.log('до «Конец» не дошли:', e.name);
}
Результат:
Начало
ReferenceError
Строка "Конец" не выполнится.
Это важно понимать: ошибка прерывает выполнение кода.
Обработка ошибок через try/catch
Чтобы программа не «падала», можно перехватывать ошибки.
try {
let user = null;
console.log(user.name);
} catch (error) {
console.log('Произошла ошибка');
}
Результат:
Произошла ошибка
Разберём:
try— блок, где может произойти ошибка;catch— блок, который её обрабатывает;error— объект с информацией об ошибке.
Теперь программа не ломается, а продолжает работать.
Получение информации об ошибке
В catch можно посмотреть детали:
try {
let user = null;
console.log(user.name);
} catch (error) {
console.log(error.message);
}
Результат:
Cannot read properties of null
Это помогает понять, что именно пошло не так.
Генерация своих ошибок
Иногда нужно создать ошибку вручную.
function withdraw(balance, amount) {
if (amount > balance) {
throw new Error('Недостаточно средств');
}
return balance - amount;
}
console.log('успешное снятие:', withdraw(100, 40));
Здесь:
throw— выбрасывает ошибку;Error— создаёт объект ошибки.
Теперь можно обработать её:
try {
withdraw(100, 200);
} catch (error) {
console.log(error.message);
}
Результат:
Недостаточно средств
Это полезно, когда нужно контролировать логику программы.
Ошибки в асинхронном коде
С асинхронностью ошибки работают немного иначе.
async function main() {
try {
await Promise.reject('Ошибка!');
} catch (error) {
console.log(error);
}
}
main();
Здесь try/catch работает только с await.
Если забыть await, ошибка не поймается — это важный момент.
Где это используется на практике
Ошибки возникают везде:
- при работе с API;
- при обработке пользовательского ввода;
- при работе с файлами;
- при сложной логике.
Например:
- сервер может вернуть ошибку;
- пользователь может ввести неправильные данные;
- данные могут отсутствовать.
Обработка ошибок позволяет:
- не «ломать» приложение;
- показывать понятные сообщения пользователю;
- контролировать поведение программы.
Итоговое понимание
Ошибка — это сигнал о том, что программа не может корректно выполнить код.
Ключевая идея в том, что ошибки — это не проблема, а инструмент. Они помогают понять, где что-то пошло не так.
Важно не только уметь читать ошибки, но и управлять ими:
- предотвращать;
- обрабатывать;
- создавать при необходимости.
Если программа — это система, то ошибки — это её способ сообщить о сбоях. И задача разработчика — научиться правильно на них реагировать.